MySQL COUNT() 関数
1. MySQL COUNT() 関数とは
COUNT() 関数は、指定された条件に一致する行の数を返します。
1.1 COUNT() の構文
SELECT COUNT([DISTINCT] column_name | *)
FROM table_name
WHERE condition;COUNT() の挙動は、括弧内で使用される引数(Argument)によって異なります。
- COUNT(*) - テーブル内の全行数をカウントします(NULL値を含みます)。
- COUNT(column_name) - 指定したカラム内のNULLではないすべての値をカウントします。
- COUNT(DISTINCT column_name) - カラム内のユニーク(一意)かつNULLではない値の数のみをカウントします。
2. デモ用データベース
本チュートリアルでは、Northwindサンプルデータベースの「Products(製品)」テーブルを使用します。以下はその抜粋です。
| ProductID | ProductName | SupplierID | CategoryID | Unit | UnitPrice |
|---|---|---|---|---|---|
| 1 | Chais | 1 | 1 | 10 boxes x 20 bags | 18.00 |
| 2 | Chang | 1 | 1 | 24 - 12 oz bottles | 19.00 |
| 3 | Aniseed Syrup | 1 | 2 | 12 - 550 ml bottles | 10.00 |
| 4 | Chef Anton's Cajun Seasoning | 2 | 2 | 48 - 6 oz jars | 22.00 |
| 5 | Chef Anton's Gumbo Mix | 2 | 2 | 36 boxes | 21.35 |
3. 各種 COUNT() の使用例
3.1 COUNT(*) を使用する
以下のSQLは COUNT(*) を使用して、「Products」テーブルの総行数をカウントします(NULL値を持つ行も含まれます)。
例:
/* Productsテーブルの全レコード数を取得 */
SELECT COUNT(*)
FROM Products;3.2 COUNT(column_name) を使用する
COUNT(column_name) は、指定されたカラムのNULLではない値の総数をカウントします。以下のSQLは、「ProductName」カラムの非NULL値の数をカウントします。
例:
/* ProductNameが入力されているレコード数を取得 */
SELECT COUNT(ProductID)
FROM Products;3.3 COUNT(DISTINCT column_name) を使用する
DISTINCTキーワードを使用することで、重複を無視してカウントできます。COUNT(DISTINCT column_name) は、カラム内のユニークで非NULLな値のみをカウントします。DISTINCTが指定された場合、同じ値を持つ行は1つとして数えられます。
例:
「Products」テーブルに何種類の異なる価格があるかを調べます。
/* 重複を除いたユニークな価格の数を取得 */
SELECT COUNT(DISTINCT Price)
FROM Products;4. WHERE句と組み合わせる
WHERE句を追加して、特定の条件を指定することができます。
例:
価格(Price)が20より高い製品の数をカウントします。
/* 価格が20を超える製品の件数を取得 */
SELECT COUNT(ProductID)
FROM Products
WHERE Price > 20;