sql >> Database teknologi >  >> RDS >> Mysql

SQL-forespørgsel for at få subtotalen af ​​nogle rækker

Du kan samle ved hjælp af en CASE udtryk, som danner en gruppe ved hjælp af id hvis manager_id være nul, ellers bruge manager_id . Resten af ​​logikken ligner det, du allerede har.

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;

Demo

En sidebemærkning:Jeg brugte en funktion i GROUP BY klausul, som ikke er ANSI-kompatibel og derfor muligvis ikke kører overalt. For at løse dette kan vi først underforespørge din tabel for at generere de effektive managergrupper. Brug derefter mit svar ovenfor mod dette mellemresultat.




  1. Sletter post med laveste ID

  2. Doctrine querybuilder DATE_FORMAT virker ikke

  3. Forespørgsel til en MySQL-database fra en NodeJS AWS Lambda-funktion

  4. PDO's lastInsertId for MySQL en race tilstand?