SQLite | SQLite関数 | 列またはテーブル全体の行数を求める(count関数)

count関数を使うと、指定した列またはテーブルの行数を求められます。ここでは使い方を説明します。

count関数の使い方

構文は次のとおりです。

count(列名)

引数に列名またはアスタリスク(*)を指定します。列名を指定するとNULL以外の行数を返し、*を指定するとテーブルのすべての行数を返します。GROUP BY句を使用する場合は、グループごとの行数を返します。

例で使用するテーブルを作成します。

create table user (id integer, name text, address text, gender text);
sqlite> create table user (id integer, name text, address text, gender text);
sqlite> 

データを追加します。

insert into user values (1, 'devkuma', 'Seoul', 'Man');
insert into user values (2, 'kimkc', 'Busan', 'Woman');
insert into user values (3, 'arikuma', 'Suwan', 'Man');
insert into user values (4, 'happykuma', NULL, 'Man');
insert into user values (5, 'raccoon', 'Seoul', 'Woman');
sqlite> insert into user values (1, 'devkuma', 'Seoul', 'Man');
sqlite> insert into user values (2, 'kimkc', 'Busan', 'Woman');
sqlite> insert into user values (3, 'arikuma', 'Suwan', 'Man');
sqlite> insert into user values (4, 'happykuma', NULL, 'Man');
sqlite> insert into user values (5, 'raccoon', 'Seoul', 'Woman');
sqlite> 

name列とaddress列の行数を求めます。

select count(name), count(address) from user;
sqlite> select count(name), count(address) from user;
5|4
sqlite> 

address列にはNULLの行が1つあるため、name列よりカウントが1少なくなります。

テーブル全体の行数を求めます。

select count(*) from user;
sqlite> select count(*) from user;
5
sqlite> 

すべての列値がNULLの行があっても、他の行と同様に数えられます。

最後に、gender列でグループ化して行数を求めます。

select gender, count(*) from user group by gender;
sqlite> select gender, count(*) from user group by gender;
Man|3
Woman|2
sqlite> 

GROUP BY句を使用すると、グループごとに行数が計算されます。詳細はデータをグループ化して合計と平均を計算する(GROUP BY句、HAVING句)を参照してください。