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
- Izjava SELECT - SQL naredbeni upit
- table_name - naziv tablice baze podataka na koju se poziva
- uvjeti - odnose se na uvjete koje treba provjeriti
- GRUPI PO - odredba da se isti redovi grupiraju
- 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
Ime | dob | telefon | rod | e |
Ivan | 23 | 123 | Muški | |
svibanj | 22 | 456 | Žena | |
zbirka anegdota | 45 | 644 | Žena | |
lonci | 57 | 3456 | Žena | |
Res | 45 | 456 | Žena | |
preplanulost | 78 | 2456 | Muški | |
Ran | 34 | 5899 | Muški | |
Wan | 55 | 7789 | Žena | |
Tung | 32 | 5689 | Muški | |
Chung | 21 | 4678 | Muš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
Ime | kofa | odjel |
Ivan | hod1 | Servis |
svibanj | hod2 | Financije |
zbirka anegdota | hod1 | Servis |
lonci | hod2 | Financije |
Res | hod3 | Tehnologija |
preplanulost | hod5 | podrška |
Ran | hod3 | Servis |
Wan | hod3 | Tehnologija |
Tung | hod3 | Financije |
Chung | hod5 | HR |
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 -
kofa | odjel |
hod1 | Servis |
hod2 | Financije |
hod3 | Tehnologija |
hod5 | podrška |
hod3 | Servis |
hod3 | Financije |
hod5 | HR |
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 |
5 | Muš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 |
3 | Servis |
3 | Financije |
2 | Tehnologija |
1 | podrška |
1 | HR |
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”) | kofa | odjel |
2 | hod1 | Servis |
2 | hod2 | Financije |
2 | hod3 | Tehnologija |
1 | hod5 | podrška |
1 | hod3 | Servis |
1 | hod3 | Financije |
1 | hod5 | HR |
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 -
Ime | dob | telefon | rod | e |
svibanj | 22 | 456 | Žena | |
zbirka anegdota | 45 | 644 | Žena | |
lonci | 57 | 3456 | Žena | |
Res | 45 | 456 | Žena | |
Wan | 55 | 7789 | Žena |
Primjer 5
SELECT * FROM Employee_Department GROUP BY department HAVING department = “Finance”;
Izvršenje ovog upita dobiva sljedeći rezultat -
Ime | kofa | odjel |
svibanj | hod2 | Financije |
lonci | hod2 | Financije |
Tung | hod3 | Financije |
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 -
- SQL upit za umetanje
- SQL prikazi
- Baza podataka u SQL-u
- Transakcije u SQL-u