1 つの SQL クエリで複数のカウントを取得するにはどうすればよいでしょうか? 質問する

1 つの SQL クエリで複数のカウントを取得するにはどうすればよいでしょうか? 質問する

このクエリをどのように記述すればよいか疑問に思っています。

この実際の構文は間違っていることは承知していますが、私が何を望んでいるかを理解するのに役立ちます。

これははるかに大きなクエリの一部であるため、この形式で必要です。

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

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

また、1 行に記述する必要があるため、次の例は機能しません。

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

ベストアンサー1

CASE集計関数を含むステートメントを使用できます。これは基本的にPIVOT、一部の RDBMS の関数と同じものです。

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

おすすめ記事