今回はテーブルの中身に何が入っているのか調べるタイミングがありました。
その際にカラムの中には何も入っていない時と入っている時があるカラムがありました。
カラムの中には何が入っているのだろう。そうおもってSQLを調べたのでまとめます。
Table of Contents
NULL以外を抽出する
何か文字が入っている列を抽出します。
今回例として以下のテーブルを使いますね。
class_score テーブル
ID | name | score |
---|---|---|
1 | 山田 | 50 |
2 | 田中 | |
3 | 小谷 | |
4 | 中島 | 50 |
5 | 山田 | 20 |
6 | 山本 | 10 |
7 | 芦田 |
こんな感じにテーブルがあったとします。
その時にscoreカラムに何かしら入力がされている場合のみをselectしようと思います。
SELECT
*
FROM
class_score
WHERE
score IS NOT NULL
Code language: PHP (php)
もし、空白行も除外したい場合には以下になります。
SELECT
*
FROM
class_score
WHERE
score IS NOT NULL
AND
score != ''
Code language: PHP (php)
null値と空白は違うので注意です!
すると結果はこんな感じです。↓
ID | name | score |
---|---|---|
1 | 山田 | 50 |
4 | 中島 | 50 |
5 | 山田 | 20 |
6 | 山本 | 10 |
点数をGROUP BYしたい
groupbyすることで重複するモノは合わせられます。
なので人の名前関係なく、何点があるのか見てみましょう↓
SELECT
score
FROM
class_score
group BY
score;
すると↓
score |
---|
50 |
20 |
10 |
50点の人、20点の人、10点の人がいることがわかります。
今回の例がわかりにくい気がする…
が、切り替えて。そしたら今度50点の人が何人いるのか気になりますよね。
ということでcountを使います。
SELECT
score,
count(*)
FROM
class_score
group BY
score
ORDER BY
COUNT(*) DESC
ついでに結果が多い順番に並べます。
- 降順(大きいのから順番)DESC
- 昇順(小さいものから順番)ASC
を使います。
そしてSQLの結果がこちら!
score | count |
---|---|
50 | 2 |
20 | 1 |
10 | 1 |
ってな感じでSQLが使えるわけです。
便利ですね~
まとめ
毎回SQLを使うときには調べているので基本的なSQL文は覚えていきたい。
そう願うばかりです。