MySQL
【Mysql】COUNTを条件指定で
ヤス
更新日:2021/08/10
こんにちわ、ヤスです。
SQLのCOUNTが関数内で条件指定できることをイマサラナガラ知りましたので、覚書き!
本日のこんなんええやん
名前 | 住所 |
---|---|
A郎くん | 大阪 |
A子さん | 大阪 |
B郎くん | 東京 |
C郎くん | 東京 |
B子さん | 大阪 |
D郎くん | 大阪 |
↑こんなデータがあるとき
大阪の人数と東京の人数を列にわけて集計したい
↓こんな感じで
東京 | 大阪 |
---|---|
2 | 4 |
いつもなら、こう(サブクエリ好きです。)
1 2 3 4 5 |
SELECT (SELECT COUNT(*) FROM hogehoge WHERE 住所 = '東京') AS 東京人数 ,(SELECT COUNT(*) FROM hogehoge WHERE 住所 = '大阪') AS 大阪人数 FROM hogehoge |
これからは、こう
1 2 3 4 5 |
SELECT COUNT(住所 = '東京' or null) AS 東京人数 , COUNT(住所 = '大阪' or null) AS 大阪人数 FROM hogehoge |
この論理です。
count(*) は全件数を数える、count(hogehoge)は、hogehogeの NOT NULL値を数える!
3値(TRUE, FALSE, NULL)を使い、数えるものをNOT NULL値、数えたくないものをNULL値にする!
COUNT(住所 = ‘東京’ or null)とすると
住所 = ‘東京’ のとき → true or null → true
住所 <> ‘東京’ のとき → false or null → null
他の集計関数もきっと使えると思います。SQL標準なのかな?日々精進!