SQL道場 集計関数 COUNT関数
SQLで行数を数えるCOUNT関数について記載しています。
対応データベース:SQLServer MySQL Oracle PostgreSQL DB2 SQLite Access ANSI
COUNT関数の文法
SELECT COUNT(*) FROM テーブル
SELECT COUNT(列名) FROM テーブル
SELECT COUNT(DISTINCT or ALL|列名) FROM テーブル
引数 Arguments | 列名 Column name | 行数を数える列 column counting rows |
返値 return value | 数値型 行数 Number of rows |
COUNT関数はテーブル内の行数を数えます。引数に*(アスタリスク)を指定するとテーブル内の全行数を数えます。列名の前にDISTINCTを指定すると値が入力されている行数を値の重複を除いて数えます。列名の前にALLを指定すると値が入力されているすべての行数を数えます。DISTINCT、ALLのどちらも指定しない場合はALLを指定した場合と同じです。COUNT関数は全てのデータ型に対して使用できます。
実行例
社員テーブル
社員名(EMP_NAME) | 年齢(EMP_AGE) | 性別(EMP_SEX) | 時給(EMP_SALARY) |
---|---|---|---|
山田太郎 | 35 | 男 | 1,000 |
鈴木花子 | 20 | 女 | 1,500 |
竹下次郎 | 30 | 男 | 2,500 |
佐藤梅子 | 40 | 女 | 800 |
ジュン鎌田 | 23 | 男 | 800 |
田中誠二 | 20 | 男 | 2,500 |
MySQLの実行例
/* MySQL 社員テーブルの全ての行を求めるサンプル */
SELECT COUNT(*) FROM testdb.MST_EMPLOYEE;

/* MySQL 重複している時給を除いた行数を求めるサンプル */
SELECT COUNT(DISTINCT EMP_SALARY) FROM testdb.MST_EMPLOYEE;

SQLServerの実行例
/* SQLServer 社員テーブルの全ての行を求めるサンプル */
SELECT COUNT(EMP_SALARY) FROM [testdb].[dbo].[MST_EMPLOYEE];

/* SQLServer 重複している時給を除いた行数を求めるサンプル */
SELECT COUNT(DISTINCT EMP_SALARY) FROM [testdb].[dbo].[MST_EMPLOYEE];
