CodeGym/Java kurs/All lectures for SV purposes/Gruppering efter flera kolumner

Gruppering efter flera kolumner

TillgÀngliga

4.1 Gruppera kolumner

Vad som ocksÄ Àr mycket viktigt Àr att om du grupperar poster kan du i avsnittet SELECTendast ange de kolumner som data grupperas efter.

Dukan inteskriv en typfrÄga och ange SELECTnamnkolumnen i avsnittet :

SELECT brand, name
FROM product
GROUP BY brand

Du har ett gÀng rader i produkttabellen med namnfÀltet och det framgÄr inte vilken rad du behöver ersÀtta hÀr. TÀnk igen: du vill veta antalet produkter frÄn varje mÀrke och hur den resulterande tabellen kan fÄ namnet pÄ produkten?

Om du anvÀnder operatorn GROUP BYkan normala rader inte komma in i ditt resultat, utan endast kolumner som data grupperas efter och "berÀknade kolumner", som t.ex.COUNT(*)

4.2 Gruppering efter berÀknade kolumner

Men du kan gruppera efter flera kolumner och Àven efter berÀknade kolumner. Exempel:

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

Och resultatet av denna frÄga:

hyra_Ă„r total
2012 1
2013 1
2014 1
2015 2
2018 1

LÄt oss analysera vÄr begÀran.

I anstÀllningstabellen har varje anstÀlld ett unikt anstÀllningsdatum, sÄ att gruppera data efter det kommer inte att fungera - det kommer att finnas en post för varje datum och gruppering Àr inte sÄ meningsfullt. Men om vi gÄr frÄn anstÀllningsdatum till anstÀllningsÄr, sÄ kan det mycket vÀl vara en situation dÀr företaget anstÀllt flera anstÀllda under samma Är.

LÄt oss se igen hur den hÀr tabellen kommer att se ut innan vi grupperar:

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

Och resultatet av denna frÄga:

id namn hyra_Ă„r join_date
1 Ivanov Ivan 2012 2012-06-30
2 Petrov Petr 2013 2013-08-12
3 Ivanov Sergey 2014 2014-01-01
4 Rabinovich Moisha 2015 2015-05-12
5 Kirienko Anastasia 2015 2015-10-10
6 Vaska 2018 2018-11-11

Men denna resulterande tabell kan grupperas efter hire_year och ta reda pÄ hur mÄnga personer som anstÀlldes under ett visst Är.

4.3 Gruppering efter flera kolumner

LÄt oss nu försöka ta reda pÄ hur mÄnga anstÀllda vi anstÀllde i varje mÄnad varje Är. För att göra detta behöver vi lÀgga till inte ett, utan tvÄ berÀknade fÀlt till frÄgan pÄ en gÄng - anstÀllningsÄret (hyrÄr) och hyrmÄnad (hyrmÄnad).

LÄt oss skriva en frÄga sÄ hÀr:

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

Och resultatet av denna frÄga:

id namn hyra_Är hyra_mÄnad join_date
1 Ivanov Ivan 2012 6 2012-06-30
2 Petrov Petr 2013 8 2013-08-12
3 Ivanov Sergey 2014 1 2014-01-01
4 Rabinovich Moisha 2015 5 2015-05-12
5 Kirienko Anastasia 2015 10 2015-10-10
6 Vaska 2018 elva 2018-11-11

Om vi ​​grupperar uppgifterna i denna resultattabell efter mĂ„nad, sĂ„ grupperar vi helt enkelt personer i grupper, oavsett Ă„r de anstĂ€lldes. Och vi behöver den resulterande tabellen ha tre kolumner: Ă„r, mĂ„nad och antalet anstĂ€llda.

För att göra detta, efter operatören, GROUP BYmÄste du anvÀnda namnet pÄ inte en kolumn, utan tvÄ. Exempel:

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

Och resultatet av denna frÄga:

hyra_Är hyra_mÄnad total
2012 6 1
2013 8 1
2014 1 1
2015 5 1
2015 10 1
2018 elva 1

Vi har fÄ poster i tabellen, sÄ det finns enheter överallt i totalkolumnen. Och observera förresten att ju fler kolumner vi grupperar efter, desto fler rader har vi i resultatet.

Kommentarer
  • PopulĂ€r
  • Ny
  • Gammal
Du mÄste vara inloggad för att lÀmna en kommentar
Den hÀr sidan har inga kommentarer Àn