最終更新日:2026年6月22日
ds data-processing sql
まず結論
DISTINCTは、SQLで重複している値または値の組み合わせを1つにまとめるためのキーワードです。
DS検定では、単に「重複を消す」と覚えるだけでなく、どの列の組み合わせで重複を判定しているか、件数を数える処理とどう違うかを判断できることが重要です。
直感的な説明
売上テーブルに、同じ商品が何度も登場しているとします。
| 商品名 | 売上日 |
|---|---|
| りんご | 2026-06-01 |
| りんご | 2026-06-02 |
| みかん | 2026-06-02 |
| りんご | 2026-06-03 |
「売れた回数」を知りたいなら、重複を残して数える必要があります。 一方で「売れた商品の種類だけ」を知りたいなら、同じ商品名を何度も表示する必要はありません。
このように、一覧として種類を確認したいときに重複をまとめるのがDISTINCTです。
定義・仕組み
DISTINCTは、SELECT句で指定した列について、同じ値の行を1つにまとめます。
SELECT DISTINCT 商品名
FROM 売上テーブル;
この例では、商品名の種類だけを取得できます。
複数列を指定した場合は、1列ずつではなく列の組み合わせで重複を判定します。
SELECT DISTINCT 顧客ID, 商品名
FROM 売上テーブル;
この場合は「顧客IDと商品名のペア」が同じ行だけが重複としてまとめられます。商品名が同じでも、顧客IDが違えば別の組み合わせとして残ります。
どんな場面で使う?
DISTINCTは、次のような確認で使います。
- 顧客の居住地域の種類を確認する
- 商品カテゴリの一覧を作る
- データ入力値に想定外の表記ゆれがないかを見る
- 集計前に、どの値が存在するかをざっと確認する
ただし、売上回数や注文件数を知りたい場面でDISTINCTを使うと、必要な重複まで消してしまいます。
DS検定では、「種類の一覧」ならDISTINCT、件数や合計を求めるならCOUNTやSUMとの組み合わせと切り分けると選択肢を判断しやすくなります。
よくある誤解・混同
① DISTINCTとGROUP BYを同じものだと思う
DISTINCTは重複を取り除いて一覧を作るための機能です。 GROUP BYは、同じ値を持つ行をグループにまとめ、COUNTやSUMなどの集計関数で集計するための機能です。
| 構文 | 主な目的 |
|---|---|
| DISTINCT | 重複のない一覧を作る |
| GROUP BY | グループごとに集計する |
「集計関数とセットで合計や件数を出す」と書かれていれば、DISTINCTだけではなくGROUP BYを疑います。
② DISTINCTを使っても行数は変わらないと思う
重複があれば、取得される行数は減ります。
選択肢で「DISTINCTは表示順を変えるだけ」「レコード数には影響しない」と書かれていたら誤りです。
③ 複数列でも1列だけで重複判定すると考える
SELECT DISTINCT A, B は、A列だけでもB列だけでもなく、AとBの組み合わせで判定します。
この点は実務でも重要です。顧客IDを含めず商品名だけでDISTINCTすると、顧客ごとの購入実態を消してしまうことがあります。
まとめ(試験直前用)
- DISTINCTは重複を1つにまとめるSQLのキーワード
- 複数列では「列の組み合わせ」で重複を判定する
- GROUP BYは集計、DISTINCTは重複のない一覧作成が中心
- 件数や売上回数を知りたいときに使うと、必要な重複を消すことがある
- DS検定では「種類を知りたいのか、件数を知りたいのか」を読む
対応スキル項目(データエンジニアリング力シート)
- データ基盤
- データ操作
- ★ SQLを用いた基本的なデータ操作(検索・集計・結合等)ができる
🔗 関連記事
- バッチ処理とストリーム処理の違いとは?リアルタイム性で切り分ける【DS検定】
- FTP・SSH・SFTP・FTPSの違いとは?用途と暗号化を比較【DS検定】
- マッピング処理とは?データを対応づける基本操作【DS検定】
- 参照制約とは?FOREIGN KEY・REFERENCESと外部キーの意味【基本情報技術者試験】
- メールアドレスの正規表現とは?なぜ難しいのかを整理【DS検定】