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」となり、重複を除いた行数を取得することができた。