CASE
を使用して集計できます id
を使用してグループを形成する式 manager_id
の場合 ゼロにする必要があります。それ以外の場合は、manager_id
を使用します 。残りのロジックは、すでに持っているものと似ています。
SELECT
CASE WHEN manager_id = 0 THEN id ELSE manager_id END AS manager_id,
MAX(CASE WHEN is_manager=1 THEN name END) AS name,
SUM(no_of_items) AS total_items,
SUM(revenue) AS total_revenue
FROM items_revenue
GROUP BY
CASE WHEN manager_id = 0 THEN id ELSE manager_id END;
補足:GROUP BY
の関数を使用しました これはANSIに準拠していないため、どこでも実行できるとは限りません。これを修正するには、最初にテーブルをサブクエリして、効果的なマネージャーグループを生成します。次に、この中間結果に対して上記の回答を使用します。