sql >> Databasteknik >  >> RDS >> Mysql

SQL-fråga för att få delsumman för vissa rader

Du kan sammanställa med en CASE uttryck, som bildar en grupp med id om manager_id vara noll, annars använder du manager_id . Resten av logiken liknar det du redan 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 sidoanteckning:Jag använde en funktion i GROUP BY klausul, som inte är ANSI-kompatibel och därför kanske inte körs överallt. För att åtgärda detta kan vi först undersöka din tabell för att generera effektiva chefsgrupper. Använd sedan mitt svar ovan mot detta mellanresultat.




  1. Kan du indexera delfrågor?

  2. Spring Boot JPA MySQL :Det gick inte att fastställa en lämplig drivrutinsklass

  3. Förbättring av radnumreringsmedianlösningen

  4. Skapa MySQL-användare och databas från PHP