sql >> Databasteknik >  >> RDS >> Mysql

MySQL:Summa värden i delfrågor

Några förslag:

  • Gå med på seasons en gång. En koppling gör att rader från den vänstra tabellen dupliceras, så de kan summeras två gånger med sum aggregat. Om du är osäker, kör frågan utan att group by för en exempelskola.
  • Du måste relatera underfrågan till den yttre frågan med något som inner_schools.id = outer_schools.id
  • Men så vitt jag kan se behöver du ingen underfråga alls

Till exempel:

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

För flera kategorier kan du använda ett fall:

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. Skriver i ExcelSheet med UTL_FILE-paketet i Oracle

  2. Docker - Hur kan man köra kommandot psql i postgres-behållaren?

  3. Implementera en anpassad sortering

  4. få JOIN-tabellen som en rad resultat med PostgreSQL/NodeJS