SQL GROUP BY klauzula tiek izmantota, lai identiskus datus sakārtotu grupās, pamatojoties uz vienu vai vairākām kolonnām. To parasti izmanto kopā ar tādām apkopotām funkcijām kā COUNT() SUM() AVG() MAX() un MIN(), lai veiktu aprēķinus katrai datu grupai.
Piemērs: Vispirms mēs to darīsim izveidot demo SQL datu bāze un tabula, kurā izmantosim komandu GROUP BY.
Vaicājums:
SELECT Department SUM(Salary) AS TotalSalary FROM Employees GROUP BY Department;Izvade:
Sintakse:
SELECT column1 aggregate_function(column2) FROM table_name WHERE condition GROUP BY column1 column2;- aggregate_function: funkcija, ko izmanto apkopošanai, piem. SUM() AVG() COUNT().
- tabulas_nosaukums: tabulas nosaukums, no kuras tiek atlasīti dati.
- nosacījums: Neobligāts nosacījums rindu filtrēšanai pirms grupēšanas (izmanto kopā ar WHERE).
- kolonna 1 kolonna 2: Kolonnas, kurām tiek lietota grupēšana.
GROUP BY piemēri
Pieņemsim, ka mums ir Studentu tabula. Mēs ievietosim šajā tabulā dažus datu paraugus un pēc tam veiksim darbības, izmantojot GROUP BY, lai saprastu, kā tā grupē rindas, pamatojoties uz kolonnu, un apkopo datus.
1. piemērs. Grupēšana pēc vienas kolonnas
Grupējot pēc vienas kolonnas, tiek apvienotas rindas ar vienādu vērtību šajā kolonnā. Piemēram, grupēšana pēc priekšmeta parāda, cik studentu ir uzņemti katrā priekšmetā.
Vaicājums:
SELECT subject COUNT(*) AS Student_Count FROM Student GROUP BY subject;Izvade:
Paskaidrojums: Katrs priekšmets tabulā parādās divas reizes, tāpēc angļu valodas matemātikas un dabaszinātņu skaits ir 2.
2. piemērs: grupēšana pēc vairākām kolonnām
Izmantojot GROUP BY ar vairākām kolonnām, tiek grupētas rindas, kurām šajās kolonnās ir vienādas vērtības. Piemēram, grupējot pēc mācību priekšmeta un gada, rindas tiks apvienotas ar vienu un to pašu mācību priekšmetu un gadu pāri, un mēs varam saskaitīt, cik skolēnu ietilpst katrā grupā.
Vaicājums:
SELECT subject year COUNT(*) FROM Student GROUP BY subject year;Izvade:
Paskaidrojums: Studenti ar vienu un to pašu mācību priekšmetu un gadu tiek grupēti kopā. Tā kā katrs mācību priekšmeta un gada pāris notiek divas reizes, katrai grupai skaits ir 2.
Klauzulas IZMANTOŠANA GROUP BY klauzulā
HAVING klauzula tiek izmantota, lai filtrētu rezultātus pēc grupēšanas, īpaši, strādājot ar apkopojošām funkcijām, piemēram, SUM() COUNT() vai AVG(). Atšķirībā no WHERE tas piemēro nosacījumus grupētiem datiem.
1. piemērs: filtrējiet pēc kopējās algas
Šajā vaicājumā mēs grupējam darbiniekus pēc vārda un rādām tikai tos, kuru kopējā alga ir lielāka par 50 000.
SELECT NAME SUM(sal) FROM Emp GROUP BY name HAVING SUM(sal)>50000; Izvade
Paskaidrojums : Rezultātā parādās tikai tie darbinieki, kuru kopējā alga pārsniedz 50 000.
2. piemērs: filtrējiet pēc vidējās algas
Šajā vaicājumā mēs sagrupējam darbiniekus pēc vecuma un attēlojam tikai tās vecuma grupas, kurās vidējā alga ir virs 60 000.
SELECT age AVG(sal) AS Average_Salary FROM emp GROUP BY age HAVING AVG(sal) > 60000;Izvade:
Paskaidrojums: Šis vaicājums sagrupē darbiniekus pēc vecuma un aprēķina vidējo algu katram vecumam. Tiek rādītas tikai tās vecuma grupas, kurās vidējā alga ir lielāka par 60 000.
javascript komentārsIzveidojiet viktorīnu