Uvod u klapu GROUP BY u SQL-u

Za slučajeve kada trebamo grupirati redove s istom vrijednošću, klauzula Group By dolazi na sliku. Odredba GROUP BY naredba je u SQL-u koja će izvesti ovu operaciju.

Važno je ovdje imati na umu da se rečenica GROUP BY koristi u izrazu SELECT u upitu nakon što se koristi klauzula WHERE.

Sintaksa

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

Objašnjenje sintakse

  1. Izjava SELECT - SQL naredbeni upit
  2. table_name - naziv tablice baze podataka na koju se poziva
  3. uvjeti - odnose se na uvjete koje treba provjeriti
  4. GRUPI PO - odredba da se isti redovi grupiraju
  5. NAROČITE PO - uvijek se koristi nakon Grupe klauzulom za slaganje redaka u uzlaznom ili silaznom redoslijedu. To je neobavezan uvjet.

Kako klauzula GROUP BY radi u SQL-u?

Da bismo razumjeli rad Grupe klauzulom, uzmimo za pomoć primjer. Razmotrite tablicu s imenom kao ZAPOSLENO koja sadrži osnovne podatke o zaposleniku kao što su ime, starost, telefonski broj, dob, spol, adresa, ID e-pošte itd.

Tablica zaposlenika

Imedobtelefonrode
Ivan23123Muški
svibanj22456Žena
zbirka anegdota45644Žena
lonci573456Žena
Res45456Žena
preplanulost782456Muški
Ran345899Muški
Wan557789Žena
Tung325689Muški
Chung214678Muški

Uzmite u obzir da ZAPOSLENI imaju oko 10 unosa.

Donosimo najprije različite vrijednosti „roda“ iz ove tablice. Upit koji će nam pomoći da ostvarimo naš cilj bio bi -

SELECT gender FROM EMPLOYEE;

To će nam dati sljedeće vrijednosti-

rod
Muški
Žena
Žena
Žena
Žena
Muški
Muški
Žena
Muški
Muški

Ovdje je problem suvišnost vrijednosti, tj. Kao što vidimo da u tablici postoje samo dvije jedinstvene vrijednosti spola, ali izlaz nam ne daje samo jedinstvene vrijednosti, već i sve vrijednosti, čak i ako se ponavljaju.

Kako bismo iz tablice dobili samo jedinstvene vrijednosti, upotrijebit ćemo sljedeći upit -

SELECT gender FROM EMPLOYEE GROUP BY gender;

Rezultat koji dobijemo nakon izvršenja ovog upita bit će -

rod
Muški
Žena

Group By grupirat će sve iste vrijednosti u redove zajedno i vraćati samo jedan unos ili jedan redak za njih, kao što je to učinio s redovima "Male" i "Female" u tablici. To je rezultiralo sa samo dvije jedinstvene vrijednosti koje su bile prisutne u stupcu "spol" i, e. Ženski i muški.

Uzmimo još jedan primjer tablice koja sadrži detalje odjeljenja s kojim je svaki od tih zaposlenika povezan. Nazvat ćemo ovo tablicom Employee_Department.

Tablica zaposlenika

Imekofaodjel
Ivanhod1Servis
svibanjhod2Financije
zbirka anegdotahod1Servis
loncihod2Financije
Reshod3Tehnologija
preplanulosthod5podrška
Ranhod3Servis
Wanhod3Tehnologija
Tunghod3Financije
Chunghod5HR

Dakle, sada izvršimo donji upit i potražimo rezultat -

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

Izvršenje ovog upita dobiva sljedeći rezultat -

kofaodjel
hod1Servis
hod2Financije
hod3Tehnologija
hod5podrška
hod3Servis
hod3Financije
hod5HR

Klauzula GROUP BY funkcionira i na hodniku i na odjelu za traženje jedinstvenih redaka u gore navedenom scenariju. Ona će provjeriti kombinaciju hod i odjela u odnosu na druge unose hodnika i odjela kako bi utvrdila njegovu jedinstvenost. Ako je hod isti, ali odjel je drugačiji, taj se niz tretira kao jedinstveni. Ako su hod i odjel isti za više reda, tada se dvostruki unos ne stvara i prikazuje se samo jedan redak.

GRUPA PO Operacijama klauzula

Možemo koristiti Grupu po klauzuli s nekoliko funkcija grupiranja i združivanja. Uzmimo nekoliko primjera pomoću gore spomenute dvije tablice, tj., ZAPOSLENI i zaposlenik_odjel.

Primjer 1

Dobivanje broja zaposlenih muškaraca i žena u tvrtki.

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

Izvršenje ovog upita dobiva sljedeći rezultat -

TOČKA ( „ime”)rod
5Muški
5Žena

Primjer 2

Popis broja odjela u tvrtki redoslijedom pada.

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

Izvršenje ovog upita dobiva sljedeći rezultat -

TOČKA ( „ime”)odjel
3Servis
3Financije
2Tehnologija
1podrška
1HR

Primjer 3

Brojanje različitih odjela pod istim hodom u društvu prema redoslijedu broja.

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

Izvršenje ovog upita dobiva sljedeći rezultat -

TOČKA ( „ime”)kofaodjel
2hod1Servis
2hod2Financije
2hod3Tehnologija
1hod5podrška
1hod3Servis
1hod3Financije
1hod5HR

Klauzula HAVING u SQL-u

Korištenje klauzule HAVING s klauzurom Group By ograničit će rezultat upita na redove koji imaju vrijednost spomenutu klauzulom vlasništvo.

Razumijevanje toga primjerom olakšat će -

Primjer 4

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

Izvršenje ovog upita dobiva sljedeći rezultat -

Imedobtelefonrode
svibanj22456Žena
zbirka anegdota45644Žena
lonci573456Žena
Res45456Žena
Wan557789Žena

Primjer 5

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

Izvršenje ovog upita dobiva sljedeći rezultat -

Imekofaodjel
svibanjhod2Financije
loncihod2Financije
Tunghod3Financije

Zaključak

Korištenjem klauzule GROUP BY s naredbom SELECT možemo grupirati redove s istim vrijednostima zajedno s uporabom funkcija agregata, konstanti i izraza.

Preporučeni članci

Ovo je vodič za klauzulu GROUP BY u SQL-u. Ovdje smo raspravljali o načinu na koji GROUP BY klauzula djeluje u SQL-u uz pomoć primjera i tablica zaposlenika. Možete također pogledati sljedeće članke da biste saznali više -

  1. SQL upit za umetanje
  2. SQL prikazi
  3. Baza podataka u SQL-u
  4. Transakcije u SQL-u

Kategorija: