ds data-processing sql
まず結論
COUNT(*)=全行数(NULL含む)
COUNT(列)=NULLを除いた件数
COUNT DISTINCT=重複を除いたユニーク数
DS検定では「何を数えているか」を見抜く問題が頻出
直感的な説明
データが次のようにあったとします。
顧客ID A A B NULL
このとき
COUNT(*) → 4(全部数える)
COUNT(顧客ID) → 3(NULLは除く)
COUNT DISTINCT → 2(AとB)
👉 「何をカウントしているか」で結果が変わる
定義・仕組み
COUNT(*)
すべての行をカウント
NULLも含む
COUNT(列)
指定した列の「NULL以外」をカウント
COUNT DISTINCT
重複を除いた値の個数をカウント
基本形:
SELECT COUNT(*) FROM テーブル; SELECT COUNT(列名) FROM テーブル; SELECT COUNT(DISTINCT 列名) FROM テーブル;
どんな場面で使う?
COUNT(*)
データ件数の確認
COUNT(列)
欠損(NULL)を除いた数を知りたいとき
COUNT DISTINCT
ユニーク数(顧客数・商品数など)
よくある誤解・混同
❌ COUNT(列)は全件数
→ ⭕ NULLは数えない
👉 DS検定では「NULLを含むか」でひっかける
❌ COUNT(*)とCOUNT(列)は同じ
→ ⭕ NULLがあると結果が変わる
❌ COUNT DISTINCTはCOUNTと同じ
→ ⭕ 重複を除くため結果は小さくなる
❌ DISTINCTは行全体にかかる
→ ⭕ 列単位(または組み合わせ)で判定
まとめ(試験直前用)
COUNT(*)=全部(NULL含む)
COUNT(列)=NULL除く
COUNT DISTINCT=重複除く
「何を数えているか」で選択肢を切る
NULLと重複の扱いが最大のポイント
対応スキル項目(データエンジニアリング力シート)
データ基盤
データ操作
★ SQLを用いた基本的なデータ操作(検索・集計・結合等)ができる
🔗 関連記事
- バッチ処理とストリーム処理の違いとは?【DS検定リテラシー】
- データトランスフォーメーションとは?(非構造化データの変換)【DS検定】
- Dockerとは?再現性が出る理由を整理【DS検定】
- ETLとは?(データ統合の基本プロセス)【DS検定リテラシー】
- フィルターとは?BIツールの基本操作をわかりやすく解説【DS検定】