アーシの毎日インプット

毎日1つ以上学習する。学習した内容を公開する。を目標に自分のスキルアップを目指します。

SELECT COUNT(DISTINCT COL_A)の挙動

スポンサードリンク

SELECT COUNT(DISTINCT COL_A) FROM TABLE_A;

上記のSQLはTABLE_AのCOL_Aに何種類のデータが入っているか特定するためのSQL・・・と思っていたのですが、意外な落とし穴がありました。

下記のようなデータがCOL_Aに設定されていたとします。
あ,い,あ,null,null,か,あ

これに対して最初のSQLを実行すると結果はいくつになるでしょうか。
なんと! 3 になります。
多くのSQLがそうであるように、COUNT(DISTINCT)ではnullの考慮ができません。
これでは該当項目に何種類のデータが入るか調査したいとき、nullについては個別に調査しなくてはなりません。

解決策はないかと調べてみたところ、SELECT COUNT(*)だとnullもカウントしてくれるそうなので、試してみました。

SELECT COUNT(*) FROM (SELECT COL_A FROM TABLE_A GROUP BY COL_A);

これで、先程のデータであれば4を取得することができました。

少しずーつ、詳しくなっていきます。

【アーシの原点】

こちら

【頭を鍛える迷路集】

こちら

スポンサードリンク