GRUPPÉR EFTER OG UNDER
SQL introducerer de effektive GROUP BY standardsætninger og -delsætninger for at få dybere indsigt og HAVING bedre organisere data i en database.
Disse værktøjer giver dig mulighed for at transformere rådata til meningsfulde oversigter ved at kategorisere rækker og anvende aggregeringsfunktioner, hvilket gør det nemmere at analysere tendenser, identificere mønstre eller generere rapporter, der er skræddersyet til bestemte kategorier.
GRUPPÉR EFTER
Sql leverer delsætningen GROUP BY for at analysere data efter kategori eller gruppe. Denne delsætning kategoriserer rækker baseret på værdierne i angivne kolonner og partitionerer effektivt dataene i undersæt.
Den reelle effekt af GROUP BY vises, når den bruges sammen med aggregeringsfunktioner. Aggregeringsfunktioner, f.eksCOUNT(). , SUM(), AVG()MIN() og MAX() udfører beregninger på disse grupper, så du kan generere oversigtsstatistikker for hver kategori.
Du kan f.eks. bruge GROUP BY til at beregne: -total salg SUM() for hver produktkategori, -average pris AVG() på produkter fra hver leverandør, -number af kunder COUNT() i hver by.
SELECT category_id, AVG(price)
FROM sales.products
GROUP BY category_id;
Denne forespørgsel henter den gennemsnitlige pris for produkter i hver kategori ved at gruppere rækkerne i sales.products tabellen i henhold til deres category_id. Ved at anvende funktionen AVG() på price kolonnen beregner forespørgslen middelværdien af priser for alle produkter under hver enkelt category_id.
GROUP BY -delsætningen behøver ikke altid at være parret med aggregeringsfunktioner. Selvom den ofte bruges sammen med aggregerede funktioner til at udføre beregninger på grupperede data, GROUP BY kan den også bruges af sig selv til at organisere data i grupper til andre formål, f.eks. hentning af særskilte kombinationer af kolonner.
SELECT category_id
FROM sales.products
GROUP BY category_id;
Denne forespørgsel grupperer rækkerne efter category_id uden at udføre nogen aggregering og viser blot hver enkelt distinkt category_id , der findes i tabellen sales.products .
HAR
I SQL kan delsætningen WHERE ikke bruges til at filtrere resultaterne af aggregeringsfunktioner.
Hvis du vil filtrere grupper, der er oprettet af delsætningen GROUP BY baseret på resultater af aggregerede funktioner, skal du bruge delsætningen HAVING .
Tænk på HAVING som en WHERE delsætning for grupper: Det giver dig mulighed for at anvende betingelser på de opsummerede data, der er produceret af aggregerede funktioner, så du kan tilpasse din analyse, så den fokuserer på relevante grupper.
SELECT category_id, AVG(price)
FROM sales.products
GROUP BY category_id
HAVING AVG(price) > 30;
Denne forespørgsel beregner gennemsnittet price af produkter i hver kategori ved at gruppere rækker i tabellen sales.products i henhold til deres category_id. Derefter filtreres resultaterne, så de kun inkluderer de kategorier, hvor gennemsnittet price overstiger 30, ved hjælp af delsætningen HAVING .