SQLでテーブルのレコード数(行数)を取得する場合COUNT関数を使うが、今回はこのCOUNT関数の基本的な使い方とともに、重複データを除外したレコード数を取得するDISTINCT句について紹介する。

COUNT関数の基本の使い方

以下のようなテーブルがあるとする。

このテーブルのレコード数を取得する場合は、COUNT関数の引数にアスタリスクを渡せば良い。

SELECT COUNT(*) FROM access_log_wide;

結果は以下のとおりとなり、全てのデータを対象としたレコード数が取得できる。

カラム名を指定した使い方

次は以下のテーブルを例にする。

先ほどの例ではCOUNT関数の引数にアスタリスクを指定したが、今回は引数にカラム名を指定してみる。

SELECT COUNT(search_hit) FROM access_log_wide;

結果は「1」となった。

カラム名を指定すると対象の列がnullとなっている場合、その行はカウントされない仕組みになっているのだ。

search_hitカラムには2行目にしかデータが入っていないため、結果は「1」となる。

重複を除外するDISTINCT句

引き続き以下のテーブルを例とする。

request_pathカラムには重複データが存在している。

これを除いたデータ数を調べたい場合、次のようにCOUNT関数の引数にDISTINCT句とともに対象のカラム名を指定してあげれば良い。

SELECT COUNT(DISTINCT request_path) FROM access_log_wide;

結果は「3」となり、重複を除いた行数を取得することができた。