sql >> Databasteknik >  >> RDS >> Database

Hur man filtrerar poster med Aggregerad funktion COUNT

Problem:

Du vill hitta grupper av rader med ett specifikt antal poster i en grupp.

Exempel:

Vår databas har en tabell som heter product med data i följande kolumner:id , name och category .

id namn kategori
1 soffa möbler
2 handskar kläder
3 T-shirt kläder
4 stol möbler
5 skrivbord möbler
6 titta elektronik
7 fåtölj möbler
8 kjol kläder
9 radiomottagare elektronik

Låt oss hitta produktkategorin med fler än två poster.

Lösning:

SELECT category, COUNT(id)
FROM product
GROUP BY category
HAVING COUNT(id)>2;

Här är resultaten:

kategori räkna
möbler 4
kläder 3

Diskussion:

För att filtrera poster enligt det givna antalet rader i gruppen, använd HAVING-satsen. Den filtrerar rader med en aggregatfunktion som COUNT. Använd först i SELECT namnet på en kolumn eller kolumner för att gruppera rader (detta är en kategori i vårt exempel), placera sedan den aggregerade funktionen COUNT, som motsvarar antalet poster i varje grupp. För att räkna antalet rader, använd id-kolumnen som lagrar unika värden (i vårt exempel använder vi COUNT(id) ). Använd sedan GROUP BY-satsen för att gruppera poster enligt kolumner (GROUP BY kategori ovan). Efter att ha använt GROUP BY för att filtrera poster med aggregerade funktioner som COUNT, använd HAVING-satsen. Den används alltid efter GROUP BY-satsen. I HAVING använder vi ett villkor för att jämföra ett värde med ett som returneras av den aggregerade funktionen. I exemplet jämför vi om COUNT(id) returnerar ett värde högre än två. Om det är sant, returneras kategorin med produktantalet.


  1. Hur du moderniserar ditt företag 2022

  2. Återställ rotlösenordet för MySQL

  3. Hur man konverterar SQL Servers tidsstämpelkolumn till datetime-format

  4. Skaffa alla föräldrar till ett barn