Úvod do klauzuly GROUP BY v SQL

V prípadoch, keď potrebujeme zoskupiť riadky s rovnakou hodnotou, sa do obrázka dostane klauzula Group By. Klauzula GROUP BY je príkaz v SQL, ktorý vykoná túto operáciu.

Dôležité je zapamätať si, že klauzula GROUP BY sa používa v príkaze SELECT v dotaze po použití klauzuly WHERE.

syntax

Syntax pre klauzulu Group By je -

SELECT column_name1, column_name2, …
FROM table_name
WHERE conditions
GROUP By column_name1, column_name2, …
ORDER By column_name1, column_name2, …;

Vysvetlenie syntaxe

  1. Príkaz SELECT - príkazový príkaz SQL
  2. table_name - názov uvádzanej databázovej tabuľky
  3. podmienky - pozri podmienky, ktoré sa majú skontrolovať
  4. GROUP BY - klauzula na zoskupenie rovnakých riadkov
  5. OBJEDNÁVKA - vždy sa používa po klauzuli Group By na usporiadanie riadkov vo vzostupnom alebo zostupnom poradí. Toto je voliteľná podmienka.

Ako GROUP BY Clause funguje v SQL?

Aby sme pochopili fungovanie klauzuly Group By, vezmime si príklad. Zoberme si tabuľku s menom ako ZAMESTNANCA, ktorá obsahuje základné údaje o zamestnancovi, ako je meno, vek, telefónne číslo, dob, pohlavie, adresa, e-mailové identifikačné číslo atď.

Tabuľka zamestnancov

názovVektelefónrode-mail
John23123Muž
Smieť22456Žena
ana45644Žena
hrnca573456Žena
Res45456Žena
opálenie782456Muž
Ran345899Muž
wan557789Žena
tung325689Muž
Chung214678Muž

Zoberme si, že EMPLOYEE má okolo 10 záznamov.

Najprv získajme z tejto tabuľky rôzne hodnoty „pohlavia“. Dotaz, ktorý nám pomôže dosiahnuť náš cieľ, bude -

SELECT gender FROM EMPLOYEE;

Takto získate nasledujúce hodnoty -

rod
Muž
Žena
Žena
Žena
Žena
Muž
Muž
Žena
Muž
Muž

Problém je tu nadbytočnosť hodnôt, tj ako vidíme, že v tabuľke sú iba dve jedinečné hodnoty pohlaví, ale výstup nám nielen dáva jedinečné hodnoty, ale všetky hodnoty, aj keď sa opakujú.

Aby sme z tabuľky dostali iba jedinečné hodnoty, použijeme nasledujúci dotaz -

SELECT gender FROM EMPLOYEE GROUP BY gender;

Výsledok, ktorý dostaneme po vykonaní tohto dotazu, bude -

rod
Muž
Žena

Group By zoskupí všetky rovnaké hodnoty do riadkov spolu a vráti im iba jeden záznam alebo jeden riadok, ako to urobil s riadkami „Male“ a „Female“ v tabuľke. Výsledkom boli iba dve jedinečné hodnoty, ktoré boli prítomné v stĺpci „pohlavie“ i, napr. Žena a muž.

Vezmime teraz ďalší príklad tabuľky, ktorá obsahuje podrobnosti o oddelení, s ktorým je každý z týchto zamestnancov spojený. Nazývame to tabuľkou Employee_Department.

Tabuľka oddelenia zamestnancov

názovhododdelenie
Johnhod1služba
Smieťhod2financie
anahod1služba
hrncahod2financie
Reshod3technológie
opáleniehod5podpora
Ranhod3služba
wanhod3technológie
tunghod3financie
Chunghod5HR

Teraz vykonajme nasledujúci dotaz a hľadaj výsledok -

SELECT hod, department FROM Employee_Department GROUP BY hod, department;

Vykonanie tohto dotazu vyvolá nasledujúci výsledok -

hododdelenie
hod1služba
hod2financie
hod3technológie
hod5podpora
hod3služba
hod3financie
hod5HR

Klauzula GROUP BY funguje tak na hod, ako aj na oddelení, aby vyhľadala jedinečné riadky vo vyššie uvedenom scenári. Skontroluje kombináciu hod a oddelenia proti iným záznamom hod a oddelenia, aby identifikoval jeho jedinečnosť. Ak je hod rovnaký, ale oddelenie je iné, potom sa tento riadok považuje za jedinečný. Ak sú hod a oddelenie rovnaké pre viac ako jeden riadok, duplikát sa nevytvorí a zobrazí sa iba jeden riadok.

Operácie klauzúl GROUP BY

Môžeme použiť klauzulu Group By s niekoľkými zoskupovacími a agregovanými funkciami. Vezmime si niekoľko príkladov pomocou vyššie uvedených dvoch tabuliek, tj EMPLOYEE a Employee_Department.

Príklad č. 1

Získanie počtu mužov a žien vo firme.

SELECT gender, COUNT(`name`) FROM EMPLOYEE GROUP BY gender;

Vykonanie tohto dotazu vyvolá nasledujúci výsledok -

Count ( 'name')rod
5Muž
5Žena

Príklad č. 2

Získanie počtu oddelení v spoločnosti v zostupnom poradí podľa počtu.

SELECT department, COUNT(`name`) FROM Employee_Department GROUP BY department ORDER BY COUNT(name) DESC;

Vykonanie tohto dotazu vyvolá nasledujúci výsledok -

Count ( 'name')oddelenie
3služba
3financie
2technológie
1podpora
1HR

Príklad č. 3

Získanie počtu rôznych oddelení pod rovnakou hodinou v spoločnosti v zostupnom poradí podľa počtu.

SELECT hod, department, COUNT(`name`) FROM Employee_Department GROUP BY hod, department ORDER BY COUNT(name) DESC;

Vykonanie tohto dotazu vyvolá nasledujúci výsledok -

Count ( 'name')hododdelenie
2hod1služba
2hod2financie
2hod3technológie
1hod5podpora
1hod3služba
1hod3financie
1hod5HR

Klauzula HAVING v SQL

Použitie klauzuly HAVING s klauzulami Group By obmedzí výsledok dotazu na riadky, ktorých hodnota je uvedená v klauzule Having.

Pochopenie tohto príkladu uľahčí -

Príklad č. 4

SELECT * FROM EMPLOYEE GROUP BY gender HAVING gender = “Female”;

Vykonanie tohto dotazu vyvolá nasledujúci výsledok -

názovVektelefónrode-mail
Smieť22456Žena
ana45644Žena
hrnca573456Žena
Res45456Žena
wan557789Žena

Príklad č. 5

SELECT * FROM Employee_Department GROUP BY department HAVING department = “Finance”;

Vykonanie tohto dotazu vyvolá nasledujúci výsledok -

názovhododdelenie
Smieťhod2financie
hrncahod2financie
tunghod3financie

záver

Použitím klauzuly GROUP BY s príkazom SELECT môžeme zoskupiť riadky s rovnakými hodnotami spolu s použitím agregačných funkcií, konštánt a výrazov.

Odporúčané články

Toto je príručka k klauzuli GROUP BY v SQL. Tu diskutujeme o tom, ako GROUP BY Clause pracuje v SQL pomocou príkladov a zamestnaneckých tabuliek. Ďalšie informácie nájdete aj v nasledujúcich článkoch -

  1. SQL Vložiť dotaz
  2. Zobrazenia SQL
  3. Databáza v SQL
  4. Transakcie v SQL