Articles

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.