問題

21
SQL

DISTINCTとは?重複データを除外する方法

DISTINCTは、SELECT文の検索結果から重複したデータを除外し、一意の値だけを取得できるSQL構文です。例えば「どの費目が登録されているか」「何種類の商品が登録されているか」を確認したい場面で活躍します。この問題では、SQL DISTINCTの基本的な使い方を学びながら、重複データを効率よく取得する方法を身につけましょう。

【SQL】DISTINCTの使い方と重複除外の仕組み

【SQL】DISTINCTの基本的な役割

DISTINCTは、SELECT文の検索結果から重複したデータを除外し、一意の値だけを取得するためのSQL構文です。基本構文は以下のようになります。

SELECT DISTINCT 列名
FROM テーブル名;

DISTINCTはSELECTの直後に記述し、指定したカラムの重複を取り除きます。例えば顧客データから都道府県の種類だけを取得したり、商品データからカテゴリ一覧を表示したりする際に利用されます。データの種類を確認したい場面でよく使われる基本的なSQL構文です。

【SQL】DISTINCTとGROUP BYの違い

SQL DISTINCTとGROUP BYは、どちらも重複したデータをまとめる際に利用されますが、目的が異なります。

SELECT DISTINCT 列名
FROM テーブル名;

DISTINCTは重複データを除外して一覧を取得するための構文です。一方、GROUP BYはデータをグループ化し、件数や合計値などの集計を行うために使用します。単純に重複を除外したい場合はDISTINCT、種類ごとの件数や合計値を求めたい場合はGROUP BYを選ぶのが基本です。実務では両方を使い分ける場面が多いため、それぞれの役割の違いを理解しておきましょう。

【SQL】DISTINCTを使った重複除外に挑戦しよう

問題

DISTINCTとは?重複データを除外する方法

家計簿テーブルには同じ費目が複数登録されています。重複したデータを除外し、費目の種類だけを一覧表示してみましょう。SQL DISTINCTを使って重複のない結果を取得してください。

期待する画面

解答の画像

解答と解説(DISTINCTとは?重複データを除外する方法)

解説

LINE登録して解答を見る

※ご登録後トークルーム下部にあるメニュー内
「無料問題集※解答付き」を押すと
解答閲覧用URLが届きます

DISTINCTは、SELECT文の検索結果から重複したデータを除外し、一意の値だけを取得するためのSQL構文です。今回の解答では、家計簿テーブルの「費目」カラムを対象にDISTINCTを使用しているため、同じ費目が複数登録されていても1回だけ表示されます。

構文は「SELECT DISTINCT 列名 FROM テーブル名;」の形で記述します。DISTINCTは必ずSELECTの直後に記述する必要があり、指定したカラムの値を比較して重複を取り除きます。今回の「費目」には「食費」「交通費」「食費」のように同じデータが含まれている可能性がありますが、DISTINCTを使うことで「食費」「交通費」のような重複のない結果を取得できます。

SQL DISTINCTは、データの種類を一覧で確認したい場面でよく利用されます。例えば、ECサイトの商品カテゴリ一覧を取得したり、顧客が登録している都道府県の種類を調べたりする際に便利です。また、集計前のデータ確認や分析の下準備として利用されることも少なくありません。

初心者がよく間違えるポイントとして、DISTINCTは指定したカラムだけで重複判定を行うのではなく、複数のカラムを指定した場合はその組み合わせ全体で判定される点があります。重複を除外したい対象がどのカラムなのかを意識しながら使うことが大切です。SQL DISTINCTは実務でも頻繁に使用されるため、SELECT文とセットで覚えておきましょう。

補足

DISTINCTは重複データを除外する際に便利なSQL構文ですが、実務ではCOUNT関数と組み合わせて使用するケースも多くあります。例えば「購入した顧客数」や「登録されている商品カテゴリ数」など、一意のデータ件数を集計する際には「COUNT(DISTINCT 列名)」を使用します。また、データを集計したい場合はDISTINCTではなくGROUP BYを使う場面もあります。SQL DISTINCTの基本を理解したら、COUNT関数やGROUP BYの使い方もあわせて学習しておくと、データ分析や実務での活用の幅が大きく広がります。

【関連問題】
・DISTINCT応用:DISTINCTとCOUNT
・並び替え関連:ORDER BYで順序を並び変えよう
・問題集一覧:SQL問題集トップ
・SQLの基礎から学びたい方:SQL入門講座

【SQL】DISTINCTとCOUNTの活用ポイント

複数カラムで【SQL】DISTINCTを使う方法

DISTINCTは1つのカラムだけでなく、複数のカラムにも使用できます。例えば「部署」と「業務」を同時に指定した場合、どちらか一方ではなく、組み合わせ全体が重複しているデータだけが除外されます。

SELECT DISTINCT 部署, 業務
FROM 社員;

この場合、「営業・東京」と「営業・大阪」は別のデータとして扱われます。実務では顧客情報や商品データなど、複数の項目を組み合わせて重複を判定したい場面が多いため、単一カラムとの違いを理解しておきましょう。

COUNT(DISTINCT)でユニークな件数を集計しよう

実務では、重複を除外したデータの件数を知りたいケースも少なくありません。そのような場合はCOUNT関数とDISTINCTを組み合わせて使用します。

SELECT COUNT(DISTINCT 顧客ID)
FROM 注文履歴;

例えば、同じ顧客が複数回購入していても、実際に購入した顧客数だけを集計できます。データ分析や売上レポートの作成では頻繁に利用されるため、DISTINCTの基本を理解したらCOUNT(DISTINCT)もあわせて覚えておくと実務で役立ちます。

実務レベルのSQLスキルを効率よく身につけたい方は、下記の無料メンター相談もぜひ活用してみてください。

さらにスキルアップしたい方は公式LINEから「SQL」と送信すると動画が見れます。

LINE登録して動画を視聴する
あなたに合った学習プランは?LINE適正コース診断はこちら