Uvod v klavzulo GROUP BY v SQL

Za primere, ko moramo vrstice združevati z isto vrednostjo, v polje pride slika. Stavek GROUP BY je ukaz v SQL, ki bo izvedel to operacijo.

Pomembno pri tem si je treba zapomniti, da je stavka GROUP BY v poizvedbi uporabljena v stavku SELECT po poizvedbi WHERE.

Sintaksa

Sintaksa za klavzulo 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, …;

Pojasnilo skladnje

  1. Stavek SELECT - ukazna poizvedba SQL
  2. table_name - ime tabele baze podatkov, na katero se nanaša
  3. pogoji - nanašajo se na pogoje, ki jih je treba preveriti
  4. GROUP BY - določba, da se iste vrstice združijo skupaj
  5. NAROČI PO - vedno se uporablja po skupini s klavzulo za urejanje vrstic v naraščajočem ali padajočem vrstnem redu. To je izbirni pogoj.

Kako Clause GROUP BY deluje v SQL?

Da bi razumeli delovanje skupine, s klavzulo uporabimo primer. Razmislite o tabeli z imenom EMPLOYEE, ki vsebuje osnovne podatke o zaposlenem, kot so ime, starost, telefonska številka, dob, spol, naslov, elektronska pošta itd.

Tabela zaposlenih

imestarosttelefonspolE-naslov
John23123Moški
Maj22456Ženska
Ana45644Ženska
Lonci573456Ženska
Res45456Ženska
Tan782456Moški
Ran345899Moški
Wan557789Ženska
Tung325689Moški
Chung214678Moški

Upoštevajte, da ima EMPLOYEE približno 10 vnosov.

Najprej iz te tabele dobimo različne vrednosti "spola". Poizvedba, ki nam bo pomagala doseči naš cilj, bi bila -

SELECT gender FROM EMPLOYEE;

Tako bomo dobili naslednje vrednosti-

spol
Moški
Ženska
Ženska
Ženska
Ženska
Moški
Moški
Ženska
Moški
Moški

Težava tukaj je odveč vrednosti, tj. Kot lahko vidimo, da sta v tabeli le dve edinstveni vrednosti spolov, vendar nam izhod ne daje samo enkratnih vrednosti, ampak tudi vse vrednosti, čeprav se ponavljajo.

Če želimo iz tabele dobiti le edinstvene vrednosti, bomo uporabili naslednje poizvedbo -

SELECT gender FROM EMPLOYEE GROUP BY gender;

Rezultat, ki ga bomo prejeli po izvedbi te poizvedbe, bo -

spol
Moški
Ženska

Skupina By bo združila vse iste vrednosti v vrsticah skupaj in jim vrnila le en vnos ali posamezno vrstico, kot je to storil z vrsticama "Male" in "Female" v tabeli. To je povzročilo samo dve edinstveni vrednosti, ki sta bili prisotni v stolpcu "spol" i, e. Ženska in moški.

Zdaj pa vzemimo še en primer tabele, ki vsebuje podrobnosti o oddelku, s katerim je povezan vsak od teh zaposlenih. Temu bomo rekli tabela Employee_Department.

Tabela zaposlenih

imehododdelek
Johnhod1Storitev
Majhod2Finance
Anahod1Storitev
Loncihod2Finance
Reshod3Teh
Tanhod5Podpora
Ranhod3Storitev
Wanhod3Teh
Tunghod3Finance
Chunghod5HR

Torej, zdaj izvedemo spodnjo poizvedbo in iščemo rezultat -

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

Izvedba te poizvedbe pridobi naslednji rezultat -

hododdelek
hod1Storitev
hod2Finance
hod3Teh
hod5Podpora
hod3Storitev
hod3Finance
hod5HR

Klavzula GROUP BY deluje tako na hod kot oddelek, da išče edinstvene vrstice v zgoraj omenjenem scenariju. Preveril bo kombinacijo hod in oddelka glede na druge vnose hodnika in oddelka, da ugotovi njegovo edinstvenost. Če je hod enak, oddelek pa je drugačen, se ta vrstica obravnava kot edinstvena. Če sta hod in oddelek za več vrstic enaka, se dvojnik ne ustvari in se prikaže samo ena vrstica.

SKUPINA PO Klavzule

Lahko uporabimo klavzulo Group By z več funkcijami združevanja in združevanja. Vzemimo nekaj primerov z uporabo zgornjih dveh tabel, tj. EMPLOYEE in Employee_Department.

Primer # 1

Pridobivanje števila moških in žensk v podjetju.

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

Izvedba te poizvedbe pridobi naslednji rezultat -

COUNT ('ime')spol
5Moški
5Ženska

Primer # 2

Pridobivanje števila oddelkov v podjetju po padajočem vrstnem redu.

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

Izvedba te poizvedbe pridobi naslednji rezultat -

COUNT ('ime')oddelek
3Storitev
3Finance
2Teh
1Podpora
1HR

Primer # 3

Pridobivanje števila različnih oddelkov v istem hodu v družbi v padajočem vrstnem redu štetja.

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

Izvedba te poizvedbe pridobi naslednji rezultat -

COUNT ('ime')hododdelek
2hod1Storitev
2hod2Finance
2hod3Teh
1hod5Podpora
1hod3Storitev
1hod3Finance
1hod5HR

Klavzula HAVING v SQL

Uporaba klavzule HAVING s klavzulo Group By bo rezultat poizvedbe omejila na vrstice z vrednostjo, omenjeno s klavzulo Have.

Razumevanje tega s primerom bo olajšalo -

Primer št. 4

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

Izvedba te poizvedbe pridobi naslednji rezultat -

imestarosttelefonspolE-naslov
Maj22456Ženska
Ana45644Ženska
Lonci573456Ženska
Res45456Ženska
Wan557789Ženska

Primer št. 5

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

Izvedba te poizvedbe pridobi naslednji rezultat -

imehododdelek
Majhod2Finance
Loncihod2Finance
Tunghod3Finance

Zaključek

Z uporabo stavka GROUP BY z stavkom SELECT lahko razvrstimo vrstice z enakimi vrednostmi skupaj z uporabo združenih funkcij, konstanc in izrazov.

Priporočeni članki

To je vodnik po členu GROUP BY v SQL. Tukaj razpravljamo o tem, kako GROUP BY Clause deluje v SQL s pomočjo tabel Primeri in Zaposleni. Za več informacij si lahko ogledate tudi naslednje članke -

  1. Poizvedba za vstavljanje SQL
  2. Pogledi SQL
  3. Baza podatkov v SQL
  4. Transakcije v SQL