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

MySQL:Sumuj wartości w podzapytaniach

Kilka sugestii:

  • Dołącz w seasons raz. Sprzężenie powoduje zduplikowanie wierszy z lewej tabeli, więc można je zsumować dwukrotnie przez sum agregat. W razie wątpliwości uruchom zapytanie bez group by na przykładową szkołę.
  • Musiałbyś powiązać podzapytanie z zapytaniem zewnętrznym za pomocą czegoś takiego jak inner_schools.id = outer_schools.id
  • Ale o ile widzę, nie potrzebujesz w ogóle podzapytania

Na przykład:

SELECT  schools.*
,       sum(cashflows.amount) total_branding_cashflow
FROM    schools
JOIN    seasons
ON      seasons.school_id = schools.id 
        and seasons.year = 2010
JOIN    cashflows
ON      cashflows.season_id = seasons.id 
        and cashflow_group_id = 12
GROUP BY 
        schools.id 
HAVING  total_branding_cashflow BETWEEN 50000000 AND 100000000

W przypadku wielu kategorii możesz użyć etui:

SELECT  schools.*
,       sum(case when cashflow_group_id = 1 then cashflows.amount end) total1
,       sum(case when cashflow_group_id = 12 then cashflows.amount end) total12
FROM    schools
JOIN    seasons
ON      seasons.school_id = schools.id 
        and seasons.year = 2010
JOIN    cashflows
ON      cashflows.season_id = seasons.id 
GROUP BY 
        schools.id 



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL Jak wstawić do tabeli z podzapytaniem SELECT zwracającym wiele wierszy?

  2. Jak automatycznie zaktualizować MySQL po wygaśnięciu pola znacznika czasu?

  3. #1273 — Nieznane sortowanie:„utf8mb4_unicode_ci” cPanel

  4. Jak podpowiedzieć indeks do użycia w kwerendzie wybierającej MySQL?

  5. Pętla MySQL przez tabele