MySQL 速習チュートリアル

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(製品)」テーブルを使用します。以下はその抜粋です。

ProductIDProductNameSupplierIDCategoryIDUnitUnitPrice
1Chais1110 boxes x 20 bags18.00
2Chang1124 - 12 oz bottles19.00
3Aniseed Syrup1212 - 550 ml bottles10.00
4Chef Anton's Cajun Seasoning2248 - 6 oz jars22.00
5Chef Anton's Gumbo Mix2236 boxes21.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;