sql >> Database >  >> RDS >> Database

Records filteren met de aggregatiefunctie AVG

Probleem:

U wilt groepen rijen zoeken waarin het gemiddelde van de waarden in een kolom hoger of lager is dan een bepaalde waarde.

Voorbeeld:

Onze database heeft een tabel met de naam product met gegevens in de volgende kolommen:id , name , grocery en price .

id naam boodschappen prijs
1 melk Groene winkel 2.34
2 brood Clark's Grocery 3.56
3 brood Supermarkt 4.15
4 melk Supermarkt 1.80
5 brood Kruidenierswinkel Amanda 2.26
6 melk Violet Kruidenier 3,45
7 melk Clark's Grocery 2.10
8 brood Violet Kruidenier 2.55
9 melk Kruidenierswinkel Amanda 1,95

Laten we de namen zoeken van producten waarin de gemiddelde prijs van elk product onder de boodschappen hoger is dan 3,00.

Oplossing:

SELECT name, AVG(price)
FROM product
GROUP BY name
HAVING AVG(price)>3.00;

Dit is het resultaat:

naam gem
brood 3.13

Discussie:

Gebruik de HAVING-component om records te filteren met behulp van de aggregatiefunctie.

Hier berekenen we de totale waarde:de gemiddelde prijs van elk product. Eén wordt door meer dan één kruidenier verkocht; daarom wordt voor elk de gemiddelde prijs berekend (in ons voorbeeld SELECT name, AVG(price) ). Naast de aggregatiefunctie gebruiken we ook de kolomnaam in SELECT, dus we moeten GROUP BY gebruiken met deze kolomnaam (GROUP BY name ).

De laatste stap is het gebruik van de aggregatiefunctie in de HAVING-clausule. Onthoud dat HAVING achter de GROUP BY-clausule moet worden geplaatst. Het bevat de voorwaarde die de door de aggregatiefunctie geretourneerde waarde vergelijkt met een bepaalde waarde. Hierboven is dit de gemiddelde prijs van het product met een waarde van 3,00 (HAVING AVG(price)>3.00 ). In deze zoekopdracht controleren we of de gemiddelde prijs van elk product in alle boodschappen hoger is dan drie. De zoekopdracht toonde slechts één product, brood, met een gemiddelde prijs hoger dan drie.


  1. Tabeltype retourneren van een functie in PostgreSQL

  2. Uitdagingen bij het schalen van de Moodle PostgreSQL-database

  3. PHP:Waarschuwing:sort() verwacht dat parameter 1 array is, resource gegeven

  4. Postgres - de laatste versie 0.14.0 van de pg gem geeft fout