構造化照会言語Count()関数は、構造化照会言語SELECTステートメントで使用されます。 SQL Count()関数は、SELECTステートメントで指定された基準に一致するアイテムの数を返します。
Count()関数には、重複値も含まれています。重複する値のカウントを破棄する場合は、Count()関数でDISTINCTキーワードを使用します。
構文
構造化照会言語のCount関数の構文は次のとおりです。
SELECT COUNT(*) FROM TABLE_NAME;
そして、この構文は、テーブル内に存在するレコードの総数を返します。
SELECT COUNT(COLUMN_NAME) FROM TABLE_NAME;
この構文では、COUNTキーワードの後に列名とテーブル名を記載する必要があります。
例
構造化照会言語のカウント関数の例として、特定の列を持つ既存のEmployeesテーブルを検討します。
EMPLOYEEID | FIRST_NAME | LAST_NAME | 給与 | CITY | 部門 | MANAGERID | WORKING_HOURS | 性別 |
1001 | VAIBHAVI | MISHRA | 65000 | PUNE | ORACLE | 1 | 12 | F |
1002 | VAIBHAV | シャルマ | 60000 | NOIDA | ORACLE | 1 | 9 | M |
1003 | NIKHIL | VANI | 50000 | ジャイプール | FMW | 2 | 10 | M |
2001 | PRACHI | シャルマ | 55500 | チャンディーガル | ORACLE | 1 | 10 | F |
2002 | BHAVESH | JAIN | 65500 | PUNE | FMW | 2 | 12 | M |
2003 | ルチカ | JAIN | 50000 | ムンバイ | テスト | 4 | 9 | F |
3001 | PRANOTI | SHENDE | 55500 | PUNE | JAVA | 3 | 9 | F |
3002 | ANUJA | 場所 | 50500 | ジャイプール | FMW | 2 | 9 | F |
3003 | DEEPAM | ジャウハリ | 58500 | ムンバイ | JAVA | 3 | 12 | M |
4001 | RAJESH | GOUD | 60500 | ムンバイ | テスト | 4 | 10 | M |
- 従業員テーブルの合計レコードをカウントするクエリを記述します。
SELECT COUNT(*) AS TOTAL EMPLOYEES FROM EMPLOYEES;
上記のクエリは、次の結果を示しています。これは、Employeesテーブルに合計10個のレコードがあることを意味します。
- 従業員テーブルから部門の総数を数えるクエリを作成します。
SELECT COUNT(DEPARTMENT) AS TOATLDEPARTMENT FROM EMPLOYEES;
上記のクエリは、次の結果を示しています。重複する部門の値も含まれていました。
部門フィールドから一意の値をカウントする場合は、Count()関数内で列名を指定してDISTINCTキーワードを使用します。
- 従業員テーブルから従業員の一意の部門をカウントするクエリを記述します。
SELECT COUNT(DISTINCT DEPARTMENT) AS DEPARTMENT FROM EMPLOYEES;
上記のクエリは、次の結果を示しています。 Employeesテーブルには4つの一意の部門しかないため、4つのカウントしか表示されません。
- 従業員のテーブルから一意の都市をカウントするクエリを記述します。
SELECT COUNT(DISTINCT CITY) AS CITY FROM EMPLOYEES;
上記のクエリは、次の結果を示しています。 Employeesテーブルには5つの一意の都市しかないため、5つのカウントしか表示されません。
- プネー市に所属する従業員の総数を数えるクエリを作成します。
SELECT COUNT(*) FROM EMPLOYEES WHERE CITY = ‘PUNE’;
上記のクエリは次の結果を示しています:
プネ市出身の従業員は合計3人です。
- 名前が「V」で始まり、給与が50000を超える従業員の総数をカウントするクエリを記述します。
SELECT COUNT(*) FROM EMPLOYEES WHERE FIRST_NAME LIKE ‘V%’ AND SALARY > 50000;
上記のクエリは次の結果を示しています:
名がVで始まり、給与が50000を超える従業員は2人だけです。
- マネージャーテーブルに結合された従業員のテーブルから部門の総数をカウントするクエリを記述します。
SELECT COUNT(DEPARTMENT) AS DEPARTMENT FROM EMPLOYEES INNER JOIN MANAGER ON EMPLOYEES.MANAGERID = MANAGER.MANAGER;
上記のクエリは次の結果を示しています:
上記のクエリリターンは、マネージャーIDがマネージャーテーブルから従業員のテーブルに存在する部門の総数をカウントします。