Vairāku kolonnu grupēšana pēc

Es saprotu GROUP BY x jēgu

Bet kā darbojas GROUP BY x, y un ko tas nozīmē?

Risinājums

Grupēt pēc X nozīmē iekļaut vienā grupā visus, kam ir vienāda X vērtība.

Grupēt pēc X, Y nozīmē ievienot vienā grupā visus, kam ir vienādas vērtības gan X, gan Y.

Lai ilustrētu ar piemēru, pieņemsim, ka mums ir šāda tabula, kas attiecas uz to, kas apmeklē kādu priekšmetu universitātē:

Table: Subject_Selection

Subject   Semester   Attendee
---------------------------------
ITB001    1          John
ITB001    1          Bob
ITB001    1          Mickey
ITB001    2          Jenny
ITB001    2          James
MKB114    1          John
MKB114    1          Erica

Ja group by izmantojat tikai priekšmeta slejā, teiksim:

select Subject, Count(*)
from Subject_Selection
group by Subject

Iegūsiet kaut ko līdzīgu:

Subject    Count
------------------------------
ITB001     5
MKB114     2

...jo ITB001 ir 5 ieraksti, bet MKB114 ir 2 ieraksti.

Ja mēs grupētu pēc divām kolonnām:

select Subject, Semester, Count(*)
from Subject_Selection
group by Subject, Semester

mēs iegūtu šādu rezultātu:

Subject    Semester   Count
------------------------------
ITB001     1          3
ITB001     2          2
MKB114     1          2

Tas ir tāpēc, ka, grupējot pēc divām kolonnām, tiek teikts "Grupēt tos tā, lai visi, kam ir vienāds priekšmets un semestris, būtu vienā grupā, un tad aprēķināt visas apkopojošās funkcijas (Count, Sum, Average utt.) par katru no šīm grupām". Šajā piemērā to pierāda fakts, ka, tos saskaitot, ir trīs cilvēki, kas 1. semestrī apgūst ITB001, un divi, kas to dara 2. semestrī. Abi cilvēki, kas veic MKB114, ir 1. semestrī, tāpēc nav rindas 2. semestrī (nav datu, kas ietilptu grupā "MKB114, 2. semestris").

Cerams, ka tas ir saprotams.

Komentāri (7)

Teikumu GROUP BY lieto kopā ar apkopojuma funkcijām, lai sagrupētu rezultātu kopu pēc vienas vai vairākām kolonnām, piemēram:

SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name;

Atcerieties šo secību:

  1. SELECT (tiek izmantots, lai atlasītu datus no datu bāzes)

  2. FROM (klauzula tiek izmantota, lai uzskaitītu tabulas)

  3. WHERE (klauzulu izmanto, lai filtrētu ierakstus)

  4. GROUP BY (klauzulu var izmantot SELECT izteikumā, lai apkopotu datus) vairākos ierakstos un rezultātus sagrupēt pēc viena vai vairākiem stabiņiem).

  5. HAVING (klauzulu izmanto kopā ar GROUP BY klauzulu, lai ierobežot atgriežamo rindu grupas tikai ar tām, kuru nosacījums ir TRUE)

  6. ORDER BY (atslēgvārds tiek izmantots, lai sakārtotu rezultātu kopu)

Ja izmantojat apkopojošās funkcijas, varat izmantot visus šos elementus, un šī ir kārtība, kādā tie jāiestata, pretējā gadījumā var tikt pieļauta kļūda.

Agregātu funkcijas ir šādas:

MIN atgriež mazāko vērtību dotajā slejā.

SUM atdod skaitlisko vērtību summu dotajā slejā.

AVG atdod vidējo vērtību attiecīgajā slejā.

COUNT atgriež kopējo vērtību skaitu attiecīgajā slejā

COUNT(*) atgriež tabulā esošo rindu skaitu

Komentāri (3)