データベース PR

SQLのCOUNT DISTINCTと条件の使い方を徹底解説!

記事内に商品プロモーションを含む場合があります

SQLを使ってデータベース内の情報を管理する際、
よく使われるのがCOUNT関数です。

この関数を使うことで、
テーブルに含まれるレコードの件数を
簡単に数えることができます。

特に、
データの重複を無視した件数を
知りたいときに役立つのが、
DISTINCTとの組み合わせです。

しかし、
DISTINCTの使い方や
COUNT関数に条件を付ける方法は、
最初は少し難しく感じるかもしれません。

本記事では、
初心者の方にも分かりやすいように、
COUNT DISTINCTと条件の指定方法について説明していきます。

COUNT関数の基本

COUNT関数とは?

COUNT関数は、
データベース内のレコードを
数えるために使われる集計関数です。

たとえば、
1つのテーブルに何件のレコードが
あるのかを数える際に便利です。

例:
テーブル「users」に何件のレコードがあるかを
確認するSQL文は、次のようになります。

SELECT COUNT(*) FROM users;


このSQL文を実行すると、
テーブル「users」に含まれる
全てのレコード数が表示されます。

COUNT関数の基本構文

COUNT関数の基本構文は
非常にシンプルです。
次のような形で記述します。

SELECT COUNT(カラム名) FROM テーブル名;

  • COUNT(カラム名):指定したカラムに値があるレコードを数えます。
  • COUNT(*):全てのレコードを数えます。

DISTINCTを使って重複を除いたCOUNT

DISTINCTとは?

DISTINCTは、
重複するデータを無視して、
一意のデータだけを取り出すために
使うキーワードです。

例えば、
同じユーザーが複数回登録されている場合でも、
各ユーザーを一度だけカウントしたいときに役立ちます。

DISTINCTとCOUNTの併用

DISTINCTとCOUNTを組み合わせて使うと、
重複しないデータの件数を数えることができます。

次の例で見てみましょう。

例:
テーブル「users」に登録されている
都道府県の数を知りたい場合、
次のようなSQL文を使います。

SELECT COUNT(DISTINCT 都道府県) FROM users;


このSQL文を実行すると、
重複する都道府県を無視して、
一意な都道府県の数が表示されます。

COUNT DISTINCTでの条件の指定方法

WHEREを使った条件付きCOUNT

データベース内のデータ数を数える際に、
特定の条件を付けたい場合があります。

そのときに使うのがWHERE句です。

例えば、
「神奈川県に住んでいるユーザーの数を数えたい」ときは、
次のように書きます。

SELECT COUNT(*) FROM users WHERE 都道府県 = '神奈川県';

NULL値の扱い

COUNT DISTINCTを使う場合、
NULL(値が存在しないことを示すもの)の扱いに注意が必要です。

COUNT関数では、
NULL値はカウントされません。

例:
次のSQL文では、
「神奈川県」に住んでいるユーザー数を数えますが、
NULL値は無視されます。

SELECT COUNT(DISTINCT 都道府県) FROM users WHERE 都道府県 IS NOT NULL;

実例で学ぶCOUNT DISTINCTの応用

例1: 都道府県の種類を数える

たとえば、
テーブル「users」には
複数の都道府県に住んでいる
ユーザーが登録されているとします。

その中で、
いくつの異なる都道府県があるかを
数えたいときには、DISTINCTを使います。

SELECT COUNT(DISTINCT 都道府県) FROM users;

例2: 特定の都道府県のデータを条件付きで数える

次に、
神奈川県に住んでいるユーザー数を
重複なしでカウントしてみます。

この場合も、DISTINCTを使い、
WHERE句で条件を指定します。

SELECT COUNT(DISTINCT ユーザーID) FROM users WHERE 都道府県 = '神奈川県';

集計期間を限定したCOUNTの使用例

OVER句を使った区間ごとのカウント

データを特定の期間で集計する際には、
OVER句を使ってカウントすることができます。

たとえば、1ヶ月間でのユーザー数を
カウントしたいときに便利です。

SELECT COUNT(*) OVER (PARTITION BY 月) FROM users;

これにより、
月ごとにカウントされたデータが表示されます。

COUNT DISTINCTと他の集計関数の比較

他の集計関数との違い

COUNT以外にも、
データの集計にはさまざまな関数があります。

例えば、
平均を求めるAVG、合計を求めるSUM
最大値を求めるMAX、最小値を求めるMINなどです。

  • AVG:指定したカラムの平均値を計算します。
  • SUM:指定したカラムの合計値を計算します。
  • MAX:カラムの中で最も大きな値を取得します。
  • MIN:カラムの中で最も小さな値を取得します。

関連記事

他にも、SQLに関する
さまざまな技術情報をまとめた
関連記事をぜひご覧ください!

まとめ

本記事では、
SQLでのCOUNT DISTINCTの基本から、
条件を指定したデータのカウント方法までを詳しく説明しました。

DISTINCTを使うことで、
重複するデータを除外し、
必要な情報だけを効率よく抽出することができます。

COUNT DISTINCTを活用することで、
SQLの応用力が大幅にアップします。

ぜひ、この記事の内容を参考にして、
自分のデータベースに適用してみてください!