SQL 速習チュートリアル

SQL COUNT() 関数

1. SQL COUNT() 関数

COUNT() 関数は、指定された条件に一致する行(レコード)の数をリターンします。

2. COUNT() のシンタックス

SELECT COUNT([DISTINCT] カラム名 | *)
FROM テーブル名
WHERE 条件;

COUNT() の挙動は、括弧内で使用される引数によって異なります:

  • COUNT(*):テーブル内の全行数をカウントします(NULL 値を含みます)。
  • COUNT(カラム名):指定されたカラム内の NULL ではないすべての値をカウントします。
  • COUNT(DISTINCT カラム名):指定されたカラム内の、ユニーク(一意)かつ NULL ではない値の数のみをカウントします。

3. COUNT(*) の使用

次の SQL は COUNT(*) を使用し、"Products" テーブルの全行数をカウントします(NULL 値も含まれます)。

3.1 例(自分専用の SQL Server を取得)

-- 全レコード数をカウントする --
SELECT COUNT(*)
FROM Products;

4. デモ用データベース

以下は、例題で使用する Products テーブルの抜粋です。

ProductIDProductNameSupplierIDCategoryIDUnitPrice
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

5. COUNT(column_name) の使用

COUNT(column_name) は、指定されたカラム内の NULL ではないすべての値をカウントします。

次の SQL は、"ProductName" カラムの NULL ではないすべての値をカウントします。

5.1 例

-- ProductName が入っている行数をカウントする --
SELECT COUNT(ProductName)
FROM Products;

6. COUNT(DISTINCT column_name) の使用

DISTINCT キーワードを使用することで、重複を無視することができます。

COUNT(DISTINCT column_name) は、カラム内のユニークかつ NULL ではない値のみをカウントします。
DISTINCT が指定されている場合、同じ値を持つ行は 1 つとしてカウントされます。

次の SQL は、"Price" カラムのユニークで NULL ではない値の数をカウントします。

6.1 例

"Products" テーブルには何種類の異なる価格がありますか:

-- 重複を除いた価格の種類をカウントする --
SELECT COUNT(DISTINCT Price)
FROM Products;

7. WHERE 句の追加

WHERE 句を追加して、条件を指定することができます。

7.1 例

Price(価格)が 20 より高い製品の数をカウントする:

-- 価格が20ドルを超える製品のレコード数をカウントする --
SELECT COUNT(ProductID)
FROM Products
WHERE Price > 20;

8. エイリアス(Alias)の使用

COUNT() を使用する場合、リターンされるカラムには名前がつきません。AS キーワードを使用して、カラムに説明的な名前を付けます。

8.1 例

カウント結果のカラム名を "Number of records" に設定する:

-- カラム名を 'Number of records' として全件数を取得 --
SELECT COUNT(*) AS [Number of records]
FROM Products;

9. GROUP BY と COUNT() の併用

ここでは COUNT() 関数と GROUP BY 句を併用して、"Products" テーブルのカテゴリ(CategoryID)ごとのレコード数をリターンします。

9.1 例

-- カテゴリIDごとにグループ化し、それぞれのレコード件数を取得 --
SELECT COUNT(*) AS [Number of records], CategoryID
FROM Products
GROUP BY CategoryID;