【文字が入力されているカラムだけ抽出】SQLで文字が入力されていないカラムは除外してselectする。

SQL

今回はテーブルの中身に何が入っているのか調べるタイミングがありました。

その際にカラムの中には何も入っていない時と入っている時があるカラムがありました。

カラムの中には何が入っているのだろう。そうおもってSQLを調べたのでまとめます。

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 

もし、空白行も除外したい場合には以下になります。

SELECT 
    *
FROM
    class_score 
WHERE 
    score IS NOT NULL 
 AND
    score != ''

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文は覚えていきたい。

そう願うばかりです。

コメント

タイトルとURLをコピーしました