---
title: "DISTINCTとは？重複データを除去する基本操作【DS検定】"
description: "DISTINCTは、SQLで重複した行や値の組み合わせを1つにまとめる機能です。GROUP BYやCOUNTとの違い、複数列指定時の判定単位、DS検定で迷いやすい重複排除の読み取り方を整理します。"
last_modified_at: "2026-06-22"
canonical_url: "https://stemtazoo.github.io/ds/sql-distinct/"
section: "ds"
---

<div style="font-size: 14px; margin-bottom: 12px;">
  <a href="/ds/">DS検定トップ</a>
  ＞ DISTINCTとは？重複データを除去する基本操作【DS検定】
</div>

## まず結論

DISTINCTは、SQLで**重複している値または値の組み合わせを1つにまとめる**ためのキーワードです。

DS検定では、単に「重複を消す」と覚えるだけでなく、**どの列の組み合わせで重複を判定しているか**、**件数を数える処理とどう違うか**を判断できることが重要です。

## 直感的な説明

売上テーブルに、同じ商品が何度も登場しているとします。

| 商品名 | 売上日 |
|---|---|
| りんご | 2026-06-01 |
| りんご | 2026-06-02 |
| みかん | 2026-06-02 |
| りんご | 2026-06-03 |

「売れた回数」を知りたいなら、重複を残して数える必要があります。
一方で「売れた商品の種類だけ」を知りたいなら、同じ商品名を何度も表示する必要はありません。

このように、**一覧として種類を確認したいときに重複をまとめる**のがDISTINCTです。

## 定義・仕組み

DISTINCTは、SELECT句で指定した列について、同じ値の行を1つにまとめます。

```sql
SELECT DISTINCT 商品名
FROM 売上テーブル;
```

この例では、商品名の種類だけを取得できます。

複数列を指定した場合は、1列ずつではなく**列の組み合わせ**で重複を判定します。

```sql
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を用いた基本的なデータ操作（検索・集計・結合等）ができる
