count関数
count関数は行数を取得するために使用します。書式は次の通りです。
count(カラム名)
引数にはカラム名または「*」を指定します。カラム名を指定した場合にはカラムに含まれる値の中でNULLのカラムを除いた行数を返します。「*」を指定した場合には行数を返します。GROUP BY句が使われている場合はグループ毎に行われます。
具体的には次のように使用します。
create table customer(id integer, old integer, address text); select count(address) from customer; select count(*) from customer;
最初のSELECT文では「address」カラムに含まれるデータの中で値がNULLではない行数を取得します。2番目のSELECT文では「customer」テーブルに含まれる行数を取得します。
サンプル
では実際に試してみます。
次のようなデータが格納されたテーブルを対象にします。
まずカラム毎の行数を取得します。
select count(id), count(name) from goods;
count関数の引数にカラム名を指定した場合は、値にNULLが含まれる行を除いた行数を返します。「name」カラムにはNULLが含まれる行が2つあるため「id」カラムの行数よりも2少なくなっています。
続いてテーブル全体の行数を取得します。
select count(*) from goods;
テーブルに含まれる行数を取得しました。もしも全てのカラムの値がNULLであるデータがあっても他のデータと同じく行数にカウントされます。
最後に「category」カラム毎にグループ化して行数を取得してみます。
select category, count(*) from goods group by category;
GROUP BY句を使ってグループ化した場合には、グループ単位で行数をカウントします。