Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Zapytanie SQL, aby uzyskać sumę częściową niektórych wierszy

Możesz agregować za pomocą CASE wyrażenie, które tworzy grupę przy użyciu id jeśli manager_id być zero, w przeciwnym razie użyj manager_id . Reszta logiki jest podobna do tej, którą już masz.

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

Jedna uwaga:użyłem funkcji w GROUP BY klauzula, która nie jest zgodna z ANSI i dlatego może nie działać wszędzie. Aby to naprawić, możemy najpierw wykonać podzapytanie w Twojej tabeli, aby wygenerować efektywne grupy menedżerów. Następnie użyj mojej powyższej odpowiedzi przeciwko temu pośredniemu wynikowi.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. connect ECONNREFUSED - węzeł js , sql

  2. Zliczanie wartości nieciągłych

  3. Sformatuj wynik zapytania mysql w żądanym formacie

  4. Brakuje pierwszego wiersza danych z MYSQL

  5. MySQL GROUP BY wiele kolumn z różnych tabel