samenvatting: in deze tutorial leert u hoe u MySQL GROUP BY
kunt gebruiken om rijen in subgroepen te groeperen op basis van waarden van kolommen of expressies.
Introduction to MySQL GROUP BY clause
de GROUP BY
clause groepeert een reeks rijen in een reeks samenvattende rijen op basis van waarden van kolommen of expressies. DeGROUP BY
clausule geeft één rij voor elke groep terug. Met andere woorden, het vermindert het aantal rijen in de resultatenreeks.,
u gebruikt vaak de GROUP BY
clausule met geaggregeerde functies zoals SUM
, AVG
, MAX
, MIN
, en COUNT
. De aggregate functie die verschijnt in deSELECT
clausule geeft informatie over elke groep.
de GROUP BY
clausule is een optionele clausule van de SELECT
verklaring., Het volgende illustreert de syntaxis van GROUP BY
:
de GROUP BY
clausule moet verschijnen na de FROM
en WHERE
clausules. Na deGROUP BY
sleutelwoorden is een lijst met door komma ‘ s gescheiden kolommen of uitdrukkingen die u wilt gebruiken als criteria om rijen te groeperen.,
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) eenvoudige MySQL groep door voorbeeld
laten we eens kijken naar de orders
tabel in de voorbeelddatabase.,
Stel u wilt de waarden van de groep van de order in subgroepen, gebruik je de GROUP BY
clausule met de status
kolom als de volgende query:
Code language: SQL (Structured Query Language) (sql)
Probeer Het
Zoals je kan zien, de GROUP BY
clausule geeft unieke exemplaren van status
waarden., Het werkt als deDISTINCT
operator zoals getoond in de volgende query:
Code language: SQL (Structured Query Language) (sql)
probeer het uit
B) met behulp van MySQL GROUP door met aggregate functies
De aggregate functies kunt u de berekening van een reeks rijen uit te voeren en retourneren van een enkele waarde. DeGROUP BY
clausule wordt vaak gebruikt met een aggregate functie om berekening uit te voeren en een enkele waarde voor elke subgroep te retourneren.,
bijvoorbeeld, als u wilt weten van het aantal orders in elke status, u kunt gebruik maken van de COUNT
functie met de GROUP BY
component als volgt:
Code language: SQL (Structured Query Language) (sql)
Probeer Het
Zie de volgende orders
en orderdetails
tabel.,
Om het totaal bedrag van alle bestellingen met een status, je deelnemen aan de orders
tabel met de orderdetails
tabel en gebruik de SUM
functie voor het berekenen van het totale bedrag. Zie de volgende query:
Code language: SQL (Structured Query Language) (sql)
probeer het uit
Op dezelfde manier retourneert de volgende query de ordernummers en het totale bedrag van elke bestelling.,
Code language: SQL (Structured Query Language) (sql)
probeer het uit
C) MySQL groep met expressievoorbeeld
naast kolommen kunt u rijen groeperen met expressies. De volgende query krijgt de totale omzet voor elk jaar.
probeer het uit
in dit voorbeeld hebben we de functie YEAR
gebruikt om jaargegevens uit de orderdatum te extraheren ( orderDate
)., We hebben alleen orders met shipped
status opgenomen in de totale verkoop. Merk op dat de uitdrukking in de SELECT
– clausule dezelfde moet zijn als die in de GROUP BY
– clausule.
D) met behulp van MySQL-groep door met clausule voorbeeld
om de groepen te filteren die worden geretourneerd door GROUP BY
– clausule, gebruikt u een HAVING
– clausule. De volgende query gebruikt deHAVING
clausule om de totale verkoop van de jaren na 2003 te selecteren.,
Code language: SQL (Structured Query Language) (sql)
probeer het uit
the GROUP BY clause: MySQL VS.standaard SQL
standaard SQL staat niet toe om een alias te gebruiken in de GROUP BY
clausule ondersteunt MySQL dit echter.
bijvoorbeeld, de volgende query haalt het jaar uit de orderdatum. Het gebruikt eerst year
als een alias van de uitdrukking YEAR(orderDate)
en vervolgens de year
alias in de GROUP BY
clausule., Deze query is niet geldig in standaard SQL.
probeer het uit
met MySQL kunt u ook groepen sorteren in oplopende of aflopende volgorde, terwijl de standaard SQL dat niet doet. De standaardvolgorde is oplopend., Bijvoorbeeld, als u wilt krijgen van het aantal orders met status en sorteren van de status in aflopende volgorde, kunt u gebruik maken van de GROUP BY
clausule DESC
als de volgende query:
Code language: SQL (Structured Query Language) (sql)
Probeer Het
Merk op dat we gebruikt DESC
in de GROUP BY
component voor het sorteren van de status
in aflopende volgorde., We kunnen ook expliciet ASC
specificeren in de GROUP BY
clausule om de groepen op status in oplopende volgorde te sorteren.
in deze tutorial hebben we u laten zien hoe u de MySQL GROUP BY
clausule gebruikt om rijen in subgroepen te groeperen op basis van waarden van kolommen of expressies.
- Was deze tutorial nuttig?
- YesNo