Resumé: i denne tutorial vil du lære at bruge MySQL GROUP BY
for at gruppere rækker i undergrupper baseret på værdier i kolonner eller udtryk.
Introduktion til MYS .l-gruppe efter klausul
GROUP BY
klausul grupperer et sæt rækker i et sæt sammenfattende rækker efter værdier af kolonner eller udtryk. GROUP BY
klausul returnerer en række for hver gruppe. Med andre ord reducerer det antallet af rækker i resultatsættet.,
Du ofte bruger GROUP BY
klausul med samlede funktioner som f.eks. SUM
AVG
MAX
MIN
og COUNT
. Den samlede funktion, der vises i SELECT
klausul indeholder oplysninger om hver gruppe.
GROUP BY
klausul er en valgfri bestemmelse af SELECT
erklæring., Følgende illustrerer GROUP BY
klausul syntax:
GROUP BY
klausul skal vises efter FROM
og WHERE
klausuler. Efter GROUP BY
søgeord er en liste over kommaseparerede kolonner eller udtryk, som du vil bruge som kriterier for at gruppere rækker.,
MySQL evaluates the GROUP BY
clause after the FROM
, WHERE
and SELECT
clauses and before the HAVING
, ORDER BY
and LIMIT
clauses:
MySQL GROUP BY examples
Let’s take some example of using the GROUP BY
clause.,
A) enkel MYS .l-gruppe ved eksempel
lad os se på orders
tabel i eksempeldatabasen.,
Antag, at du ønsker at gruppere værdierne for ordre status i undergrupper, skal du bruge GROUP BY
klausul med status
kolonne som den følgende forespørgsel:
Code language: SQL (Structured Query Language) (sql)
Prøv
Som du kan se, GROUP BY
klausul returnerer unikke forekomster af status
værdier., Det virker som DISTINCT
operatør, som vist i følgende query:
Code language: SQL (Structured Query Language) (sql)
Prøv
B) ved Hjælp af MySQL GRUPPE AF med samlede funktioner
Den samlede funktioner giver dig mulighed for at udføre beregningen af et sæt rækker og returnere en enkelt værdi. GROUP BY
– klausulen bruges ofte med en samlet funktion til at udføre beregning og returnere en enkelt værdi for hver undergruppe.,
For eksempel, hvis du ønsker at vide antallet af ordrer i hver enkelt status, kan du bruge COUNT
funktion med GROUP BY
klausul som følger:
Code language: SQL (Structured Query Language) (sql)
Prøv
Se følgende: orders
og orderdetails
tabel.,
for At få det samlede beløb for alle ordrer med status, du tilmelder dig orders
tabel med orderdetails
tabel, og brug SUM
funktion til at beregne det samlede beløb. Se følgende forespørgsel:
Code language: SQL (Structured Query Language) (sql)
Prøv
på samme måde, efter forespørgsel returnerer rækkefølgen af numre og den samlede mængde af hver enkelt ordre.,
Code language: SQL (Structured Query Language) (sql)
Prøv
C) MySQL GRUPPE AF med udtryk eksempel
ud over kolonnerne, kan du gruppere rækker af udtryk. Følgende forespørgsel får det samlede salg for hvert år.
Prøv
I dette eksempel har vi brugt den YEAR
funktion til at udtrække års data fra ordre-dato ( orderDate
)., Vi inkluderede kun ordrer med shipped
status i det samlede salg. Bemærk, at udtrykket, der vises i SELECT
klausul skal være den samme som den i GROUP BY
klausul.
D) ved Hjælp af MySQL-GRUPPEN VED med at HAVE klausul eksempel
hvis du vil filtrere de grupper, der returneres af GROUP BY
klausul, skal du bruge en HAVING
klausul. Følgende forespørgsel bruger HAVING
klausulen til at vælge årets samlede salg efter 2003.,
Code language: SQL (Structured Query Language) (sql)
Prøv
Den GRUPPE AF punkt: MySQL vs. standard SQL
Standard SQL giver dig ikke mulighed for at bruge et alias i GROUP BY
klausul, men MySQL understøtter dette.
for eksempel udtrækker følgende forespørgsel året fra ordredatoen. Det første bruger year
som et alias for den udtryk YEAR(orderDate)
og så bruger year
alias i GROUP BY
klausul., Denne forespørgsel er ikke gyldig i standard S .l.
Prøv
MySQL giver dig også mulighed for at sortere de grupper, der i stigende eller faldende ordrer, mens standard-SQL ikke. Standardordren er stigende., For eksempel, hvis du ønsker at få antallet af ordrer med status og sortere status i faldende rækkefølge, kan du bruge GROUP BY
klausul med DESC
som følgende forespørgsel:
Code language: SQL (Structured Query Language) (sql)
Prøv
Bemærk, at vi brugte DESC
GROUP BY
klausul at sortere status
i faldende rækkefølge., Vi kunne også specificere eksplicit ASC
i GROUP BY
klausul for at sortere grupperne efter status i stigende rækkefølge.
i denne vejledning har vi vist dig, hvordan du bruger Mys .l GROUP BY
– klausulen til at gruppere rækker i undergrupper baseret på værdier af kolonner eller udtryk.
- var denne vejledning nyttig?
- YesNo