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」テーブルに含まれる行数を取得します。

サンプル

では実際に試してみます。

次のようなデータが格納されたテーブルを対象にします。

p1-1

まずカラム毎の行数を取得します。

select count(id), count(name) from goods;

p1-2

count関数の引数にカラム名を指定した場合は、値にNULLが含まれる行を除いた行数を返します。「name」カラムにはNULLが含まれる行が2つあるため「id」カラムの行数よりも2少なくなっています。

続いてテーブル全体の行数を取得します。

select count(*) from goods;

p1-3

テーブルに含まれる行数を取得しました。もしも全てのカラムの値がNULLであるデータがあっても他のデータと同じく行数にカウントされます。

最後に「category」カラム毎にグループ化して行数を取得してみます。

select category, count(*) from goods group by category;

p1-4

GROUP BY句を使ってグループ化した場合には、グループ単位で行数をカウントします。