S ?l-gruppe efter og med klausul med eksempler
Hvad er S ?l-gruppen efter Klausul?
GROUP BY-klausulen er en s .l-kommando, der bruges til at gruppere rækker, der har de samme værdier. Gruppen efter klausul bruges i SELECT-sætningen. Eventuelt bruges det sammen med aggregerede funktioner til at producere sammenfattende rapporter fra databasen.
det er hvad det gør, opsummerer data fra databasen.
de forespørgsler, der indeholder GROUP BY-klausulen, kaldes grupperede forespørgsler og returnerer kun en enkelt række for hvert grupperet element.,
s .l-gruppe efter syntaks
nu hvor vi ved, hvad s .l-gruppen efter klausul er, lad os se på syntaksen for en grundlæggende gruppe efter forespørgsel.
SELECT statements... GROUP BY column_name1 ;
HER
- “SELECT-sætninger…”er standard S .l SELECT command queryuery .
- “gruppe efter column_name1” er den klausul, der udfører grupperingen baseret på column_name1.
- “” er valgfrit; repræsenterer andre kolonnenavne, når grupperingen er udført på mere end en kolonne.
- “” er valgfrit; det bruges til at begrænse de rækker, der er berørt af gruppen efter klausul., Det svarer til clausehere-klausulen.
Gruppering ved hjælp af en Enkelt Kolonne
for at hjælpe med at forstå effekten af SQL Gruppe Af klausul, lad os udføre en simpel forespørgsel, der returnerer alle køn bidrag fra medlemmerne bordet.
SELECT `gender` FROM `members` ;
gender Female
Female
Male
Female
Male
Male
Male
Male
Male
Antag at vi ønsker at få de unikke værdier for køn. Vi kan bruge en af følgende forespørgsel –
SELECT `gender` FROM `members` GROUP BY `gender`;
Udførelse af ovenstående script i MySQL workbench mod Myflixdb giver os følgende resultater.,
gender Female
Male
Bemærk kun to resultater er blevet returneret. Dette skyldes, at vi kun har to kønstyper mandlige og kvindelige. Gruppen efter klausul i S .l grupperede alle de “mandlige” medlemmer sammen og returnerede kun en enkelt række til den. Det gjorde det samme med de” kvindelige ” medlemmer.
gruppering ved hjælp af flere kolonner
Antag, at vi ønsker at få en liste over film category_id og tilsvarende år, hvor de blev frigivet.,
lad os observere udgangen af denne enkle forespørgsel
SELECT `category_id`,`year_released` FROM `movies` ;
category_id year_released 1 2011 2 2008 NULL 2008 NULL 2010 8 2007 6 2007 6 2007 8 2005 NULL 2012 7 1920 8 NULL 8 1920
ovenstående resultat har mange dubletter.
Lad os udføre den samme forespørgsel ved hjælp af group by i SQL –
SELECT `category_id`,`year_released` FROM `movies` GROUP BY `category_id`,`year_released`;
Udførelse af ovenstående script i MySQL workbench mod myflixdb giver os følgende resultater er vist nedenfor.
category_id year_released NULL 2008 NULL 2010 NULL 2012 1 2011 2 2008 6 2007 7 1920 8 1920 8 2005 8 2007
gruppen efter klausul fungerer på både Kategori-id og år frigivet for at identificere unikke rækker i vores ovenstående eksempel.,
Hvis kategori-id ‘ et er det samme, men det frigivne år er anderledes, behandles en række som en unik .Hvis Kategori-id og det frigivne år er det samme for mere end en række, betragtes det som en duplikat, og kun en række vises.
gruppering og aggregerede funktioner
Antag, at vi ønsker det samlede antal mænd og kvinder i vores database. Vi kan bruge følgende script vist nedenfor for at gøre det.
SELECT `gender`,COUNT(`membership_number`) FROM `members` GROUP BY `gender`;
Udførelse af ovenstående script i MySQL workbench mod myflixdb giver os følgende resultater.,
gender COUNT('membership_number') Female 3 Male 5
resultaterne vist nedenfor er grupperet efter hver unik køns værdi, der er indsendt, og antallet af grupperede rækker tælles ved hjælp af TÆLLEAGGREGATFUNKTIONEN.
begrænsning af forespørgselsresultater ved hjælp af HAVING-klausulen
det er ikke altid, at vi vil udføre grupperinger på alle data i en given tabel. Der vil være tidspunkter, hvor vi vil begrænse vores resultater til et bestemt givet kriterium. I sådanne tilfælde kan vi bruge HAVEKLAUSULEN
Antag , at vi vil vide alle udgivelsesårene for filmkategori id 8., Vi ville bruge følgende script til at opnå vores resultater.
SELECT * FROM `movies` GROUP BY `category_id`,`year_released` HAVING `category_id` = 8;
Udførelse af ovenstående script i MySQL workbench mod Myflixdb giver os følgende resultater er vist nedenfor.
movie_id title director year_released category_id 9 Honey mooners John Schultz 2005 8 5 Daddy's Little Girls NULL 2007 8
Bemærk kun film med kategori-id 8 er blevet påvirket af vores GRUPPE VED bestemmelse.
resum.
- gruppen efter Klausul s .l bruges til at gruppere rækker med samme værdier.
- gruppen efter Klausul bruges sammen med S .l SELECT-sætningen.,
- SELECT-sætningen, der bruges i GROUP BY-klausulen, kan kun bruges med kolonnenavne, aggregerede funktioner, konstanter og udtryk.
- s .l have Klausul bruges til at begrænse de resultater, der returneres af gruppen ved klausul.
- Mys .l GROUP BY Klausul bruges til at indsamle data fra flere poster og returnerede poster indstillet af en eller flere kolonner.