CodeGym/Java Course/All lectures for NL purposes/Groeperen op meerdere kolommen

Groeperen op meerdere kolommen

Beschikbaar

4.1 Kolommen groeperen

Wat ook erg belangrijk is, is dat als u records groepeert, u in de sectie SELECTalleen de kolommen kunt opgeven waarop de gegevens worden gegroepeerd.

Jijkan nietschrijf een typequery en specificeer de naamkolomSELECT in de sectie :

SELECT brand, name
FROM product
GROUP BY brand

Je hebt een aantal rijen in de producttabel met het naamveld , en het is niet duidelijk welke rij je hier moet vervangen. Denk nog eens na: u wilt het aantal producten van elk merk weten en hoe de resulterende tabel de naam van het product kan krijgen?

Als u de operator gebruikt GROUP BY, kunnen normale rijen niet in uw resultaat komen, maar alleen kolommen waarop gegevens zijn gegroepeerd en "berekende kolommen", zoalsCOUNT(*)

4.2 Groeperen op berekende kolommen

Maar u kunt groeperen op meerdere kolommen en zelfs op berekende kolommen. Voorbeeld:

SELECT
YEAR(join_date) AS hire_year,
COUNT(*) AS total
FROM employee
GROUP BY hire_year

En het resultaat van deze vraag:

huur_jaar totaal
2012 1
2013 1
2014 1
2015 2
2018 1

Laten we ons verzoek analyseren.

In de werknemerstabel heeft elke werknemer een unieke aanwervingsdatum, dus het groeperen van gegevens op deze zal niet werken - er zal één record zijn voor elke datum en groeperen heeft weinig zin. Maar als we van de datum van indiensttreding naar het jaar van indiensttreding gaan, kan het heel goed zijn dat het bedrijf in hetzelfde jaar meerdere werknemers in dienst heeft genomen.

Laten we nog eens kijken hoe deze tabel eruit zal zien voordat we gaan groeperen:

SELECT
 	id,
 	name,
 	YEAR(join_date) AS hire_year,
 	join_date
FROM employee

En het resultaat van deze vraag:

ID kaart naam huur_jaar join_date
1 Ivanov Ivan 2012 2012-06-30
2 Petrov Petr 2013 2013-08-12
3 Ivanov Sergej 2014 01-01-2014
4 Rabinovich Moisha 2015 2015-05-12
5 Kirienko Anastasia 2015 2015-10-10
6 Vaska 2018 2018-11-11

Maar deze resulterende tabel kan worden gegroepeerd op huur_jaar en ontdek hoeveel mensen er in een bepaald jaar zijn aangenomen.

4.3 Groeperen op meerdere kolommen

Laten we nu eens kijken hoeveel werknemers we elke maand van elk jaar hebben aangenomen. Om dit te doen, moeten we niet één, maar twee berekende velden tegelijk aan de query toevoegen: het jaar van aanwerving (hire_year) en de maand van aanwerving (hire_month).

Laten we een query als deze schrijven:

SELECT
 	id,
 	name,
 	YEAR(join_date) AS hire_year,
 	MONTH(join_date) AS hire_month,
 	join_date
FROM employee

En het resultaat van deze vraag:

ID kaart naam huur_jaar huur_maand join_date
1 Ivanov Ivan 2012 6 2012-06-30
2 Petrov Petr 2013 8 2013-08-12
3 Ivanov Sergej 2014 1 01-01-2014
4 Rabinovich Moisha 2015 5 2015-05-12
5 Kirienko Anastasia 2015 10 2015-10-10
6 Vaska 2018 elf 2018-11-11

Als we de gegevens in deze resultatentabel per maand groeperen, groeperen we mensen gewoon in groepen, ongeacht het jaar waarin ze zijn aangenomen. En we hebben de resulterende tabel nodig met drie kolommen: jaar, maand en het aantal ingehuurde werknemers.

Om dit te doen, GROUP BYmoet u na de operator de naam van niet één kolom gebruiken, maar twee. Voorbeeld:

SELECT
 	YEAR(join_date) AS hire_year,
 	MONTH(join_date) AS hire_month,
 	COUNT(*) AS total
FROM employee
GROUP BY hire_year, hire_month

En het resultaat van deze vraag:

huur_jaar huur_maand totaal
2012 6 1
2013 8 1
2014 1 1
2015 5 1
2015 10 1
2018 elf 1

We hebben weinig records in de tabel, dus er zijn overal eenheden in de totaalkolom. Merk trouwens op dat hoe meer kolommen we groeperen, hoe meer rijen we in het resultaat hebben.

Opmerkingen
  • Populair
  • Nieuw
  • Oud
Je moet ingelogd zijn om opmerkingen te kunnen maken
Deze pagina heeft nog geen opmerkingen