【Mariadb】SQLでテーブル内のすべてのレコードをカウントする方法とは?ゼロカウントも網羅!
SQL: テーブル内のカウントにゼロを含める
このチュートリアルでは、SELECT
クエリを使用して、テーブル内のすべてのレコードをカウントする方法と、ゼロを含むカウントを表示する方法について説明します。
例
customers
テーブルがあると仮定します。このテーブルには、顧客 ID、名前、およびメール アドレスに関する情報が含まれています。次のクエリは、テーブル内のすべてのレコードをカウントします。
SELECT COUNT(*) AS customer_count
FROM customers;
このクエリは、テーブル内のすべてのレコード数を 1 つの行として返します。
ゼロを含むカウントを表示するには、次のようにクエリを変更できます。
SELECT COUNT(customer_id) AS customer_count
FROM customers;
このクエリは、customer_id
列に値があるレコードのみをカウントします。customer_id
列にゼロ値があるレコードがある場合、これらのレコードはカウントされません。
SELECT COUNT(*) AS customer_count
FROM customers
WHERE customer_id IS NOT NULL;
SELECT COUNT(*) AS customer_count
FROM customers
WHERE status = 'active';
SELECT COUNT(*)
を使用して、テーブル内のすべてのレコードをカウントできます。COUNT(column_name)
を使用して、特定の列に値があるレコードのみをカウントできます。WHERE
句を使用して、カウントするレコードを条件に絞り込むことができます。
状況
customers
テーブルには、顧客 ID、名前、メール アドレス、およびステータスに関する情報が含まれています。- テーブルには、ゼロを含む顧客 ID が存在します。
目的
以下の目的を達成する SQL クエリを作成します。
- テーブル内のすべてのレコード数をカウントする。
status
列が 'active' であるレコード数をカウントする。customer_id
列がゼロであるレコード数をカウントする。
解決策
以下の SQL クエリを使用できます。
-- テーブル内のすべてのレコード数をカウント
SELECT COUNT(*) AS total_customer_count
FROM customers;
-- 'active' ステータスのレコード数をカウント
SELECT COUNT(*) AS active_customer_count
FROM customers
WHERE status = 'active';
-- customer_id がゼロのレコード数をカウント
SELECT COUNT(*) AS zero_customer_id_count
FROM customers
WHERE customer_id = 0;
説明
- 2 番目のクエリは、
WHERE
句を使用してstatus
列が 'active' であるレコードのみをカウントします。
結果
このクエリを実行すると、次の結果が得られます。
total_customer_count | active_customer_count | zero_customer_id_count
--------------------|-----------------------|-------------------------
100 | 50 | 10
この例では、テーブル内に 100 件のレコードがあり、そのうち 50 件が 'active' ステータスで、10 件の customer_id
がゼロであることが示されています。
応用例
このサンプルコードを参考に、以下のタスクを実行できます。
- 特定の列の値に基づいてレコードをカウントする。
- 集計関数 (例:
SUM
、AVG
) とともにCOUNT
関数を使用する。
CASE
式を使用して、customer_id
列がゼロかどうかを確認し、カウントを条件付きで増やすことができます。
SELECT
COUNT(*) AS total_customer_count,
COUNT(CASE WHEN status = 'active' THEN 1 END) AS active_customer_count,
COUNT(CASE WHEN customer_id = 0 THEN 1 END) AS zero_customer_id_count
FROM customers;
このクエリは、上記のサンプルコードと同じ結果を返します。
集計関数と WHERE
句を組み合わせて、条件付きでレコードをカウントすることもできます。
SELECT
SUM(CASE WHEN status = 'active' THEN 1 ELSE 0 END) AS active_customer_count,
SUM(CASE WHEN customer_id = 0 THEN 1 ELSE 0 END) AS zero_customer_id_count
FROM customers;
このクエリは、active
ステータスと customer_id
がゼロのレコード数をそれぞれ返します。
サブクエリを使用して、条件付きでレコードをカウントすることもできます。
SELECT
(SELECT COUNT(*) FROM customers) AS total_customer_count,
(SELECT COUNT(*) FROM customers WHERE status = 'active') AS active_customer_count,
(SELECT COUNT(*) FROM customers WHERE customer_id = 0) AS zero_customer_id_count;
sql mariadb