sql >> データベース >  >> RDS >> Mysql

一部の行の小計を取得するSQLクエリ

    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に準拠していないため、どこでも実行できるとは限りません。これを修正するには、最初にテーブルをサブクエリして、効果的なマネージャーグループを生成します。次に、この中間結果に対して上記の回答を使用します。




    1. MySQLでデータベースを削除するSQLクエリ

    2. SQL文字列に「if句」を入れるにはどうすればよいですか?

    3. mysqlで過去6か月の値を取得します

    4. MySQL変数をコマンドラインからスクリプトに渡す