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

Sådan filtreres poster med aggregeret funktion SUM

Problem:

Du skal finde rækker, hvor grupper har en sum af værdier i én kolonne, der er mindre end en given værdi.

Eksempel:

Vores database har en tabel ved navn company med data i følgende kolonner:id , department , first_name , last_name og salary .

id afdeling fornavn efternavn løn
1 markedsføring Lora Brun 2300
2 finans John Jackson 3200
3 markedsføring Michael Thomson 1270
4 produktion Tony Møller 6500
5 produktion Sally Grøn 2500
6 finans Olivier Sort 3450
7 produktion Jeniffer Michelin 2800
8 markedsføring Jeremy Lorson 3600
9 markedsføring Louis Smith 4200

Lad os finde navnene på afdelinger, der har lønsum for sine ansatte på under 7000.

Løsning:

SELECT department, SUM(salary)
FROM company
GROUP BY department
HAVING SUM(salary)<7000;

Her er resultatet:

afdeling sum
finans 6550

Diskussion:

For at filtrere poster ved hjælp af aggregatfunktionen (funktionen SUM fra tidligere), skal du bruge HAVING-udtrykket. For at beregne summen af ​​værdier for hver gruppe af rækker skal du bruge funktionen aggregering SUM. I denne forespørgsel beregnes kolonneafdelingen med summen af ​​alle lønninger for dens ansatte som en gruppe (beregn den med SUM-funktionen med kolonneløn som argument). Fordi du beregner værdien for hver gruppe af rækker (vi grupperer rækker efter afdelingens navn), har forespørgslen en GROUP BY-sætning med navnet på kolonnen for at gruppere rækker (i vores eksempel, GROUP BY department ). Det sidste trin er at bruge aggregatfunktionen i HAVING-sætningen. Husk, at HAVING skal stå efter GROUP BY-sætning. HAVING indeholder betingelsen, der sammenligner den værdi, der returneres af den aggregerede funktion, med en given værdi. Fra oven er det lønsum med en værdi mindre end 7000 (SUM(salary)<7000 ). Her bekræfter vi, at lønsummen i hver afdeling er lavere end 7000. Forespørgslen viste kun én afdeling, økonomi, med lønninger på 6550.


  1. Sådan erstattes en streng i en SQL Server-tabelkolonne

  2. Hybrid Cloud PostgreSQL-implementeringstip

  3. oracle sql:opdater hvis der findes andet indsæt

  4. Indlejret PostgreSQL til Java JUnit-tests