1. ホーム
  2. mysql

[解決済み] 1つのSQLクエリで複数のカウントを取得する方法は?

2022-03-14 21:18:56

質問

このクエリをどう書けばいいのか悩んでいます。

私はこの実際の構文がインチキであることを知っているが、それは私が欲しいものを理解するのに役立つだろう。 この形式が必要なのは、もっと大きなクエリの一部だからです。

SELECT distributor_id, 
COUNT(*) AS TOTAL, 
COUNT(*) WHERE level = 'exec', 
COUNT(*) WHERE level = 'personal'

私は1つのクエリでこれをすべて返す必要があります。

また、1行にまとめる必要があるため、以下はうまくいきません。

'SELECT distributor_id, COUNT(*)
GROUP BY distributor_id'

解決方法は?

を使用することができます。 CASE ステートメントを集約関数と一緒に使用します。これは基本的に PIVOT という関数があります。

SELECT distributor_id,
    count(*) AS total,
    sum(case when level = 'exec' then 1 else 0 end) AS ExecCount,
    sum(case when level = 'personal' then 1 else 0 end) AS PersonalCount
FROM yourtable
GROUP BY distributor_id