Sissejuhatus SQL-i GROUP BY klauslisse
Juhtudel, kui meil on vaja ridu rühmitada sama väärtusega, saab rühmapildi järgi lause Rühm. Klausel GROUP BY on SQL-i käsk, mis seda toimingut täidab.
Oluline on siinkohal meeles pidada, et lauset GROUP BY kasutatakse päringus SELECT pärast WHERE-lause kasutamist päringus.
Süntaks
Rühma By klausli süntaks on -
SELECT column_name1, column_name2, …
FROM table_name
WHERE conditions
GROUP By column_name1, column_name2, …
ORDER By column_name1, column_name2, …;
Süntaksi selgitus
- VALI avaldus - SQL-i käsupäring
- table_name - viidatava andmebaasi tabeli nimi
- tingimused - viidake kontrollitavatele tingimustele
- GROUP BY - klausel samade ridade rühmitamiseks
- ORDER BY - kasutatakse alati pärast Group By-klauslit ridade järjestamiseks kasvavas või kahanevas järjekorras. See on valikuline tingimus.
Kuidas GROUP BY Clause SQL-is töötab?
Rühma töö klausli mõistmiseks toome näite. Mõelge tabelile, mille nimi on TÖÖTAJA ja mis sisaldab töötaja põhiandmeid, nagu nimi, vanus, telefoninumber, sünd, sugu, aadress, e-posti aadress jne.
Töötajate tabel
nimi | vanus | telefon | sugu | e-post |
John | 23 | 123 | Mees | |
Mai | 22 | 456 | Naine | |
Ana | 45 | 644 | Naine | |
Potid | 57 | 3456 | Naine | |
Res | 45 | 456 | Naine | |
Tan | 78 | 2456 | Mees | |
Ran | 34 | 5899 | Mees | |
Wan | 55 | 7789 | Naine | |
Tung | 32 | 5689 | Mees | |
Chung | 21 | 4678 | Mees |
Mõelge, et TÖÖTAJAS on umbes 10 tööd.
Kõigepealt toome sellest tabelist välja “soo” erinevad väärtused. Päring, mis aitab meil eesmärki tuua, oleks -
SELECT gender FROM EMPLOYEE;
See annab meile järgmised väärtused-
sugu |
Mees |
Naine |
Naine |
Naine |
Naine |
Mees |
Mees |
Naine |
Mees |
Mees |
Probleemiks on siin väärtuste koondamine, st nagu näeme, on tabelis vaid kaks sugude unikaalset väärtust, kuid väljund ei anna meile mitte ainult kordumatuid väärtusi, vaid kõiki väärtusi, isegi kui need on korduvad.
Seega, et saada tabelist ainult unikaalseid väärtusi, kasutame järgmist päringut -
SELECT gender FROM EMPLOYEE GROUP BY gender;
Pärast selle päringu täitmist saame tulemuse -
sugu |
Mees |
Naine |
Rühmitamise järgi grupeeritakse kõik samad väärtused ridades kokku ja tagastatakse neile ainult üks kirje või üks rida, nagu see tehti tabelis olevate ridade „Mees“ ja „Naine“ korral. Selle tulemuseks oli vaid kaks ainulaadset väärtust, mis olid olemas veerus „sugu”, st. Naine ja mees.
Võtame veel ühe näite tabelist, mis sisaldab üksikasju osakonna kohta, millega kõik need töötajad on seotud. Kutsume seda töötajate tabeli tabeliks.
Töötajate osakonna tabel
nimi | hod | osakond |
John | hod1 | Teenindus |
Mai | hod2 | Rahandus |
Ana | hod1 | Teenindus |
Potid | hod2 | Rahandus |
Res | hod3 | Tehnika |
Tan | hod5 | Toetus |
Ran | hod3 | Teenindus |
Wan | hod3 | Tehnika |
Tung | hod3 | Rahandus |
Chung | hod5 | HR |
Nüüd lubage meil täita järgmine päring ja otsida tulemust -
SELECT hod, department FROM Employee_Department GROUP BY hod, department;
Selle päringu täitmine toob järgmise tulemuse -
hod | osakond |
hod1 | Teenindus |
hod2 | Rahandus |
hod3 | Tehnika |
hod5 | Toetus |
hod3 | Teenindus |
hod3 | Rahandus |
hod5 | HR |
Klausel GROUP BY töötab nii korpuses kui ka osakonnas, et otsida ülaltoodud stsenaariumi järgi ainulaadseid ridu. See kontrollib hodi ja osakonna kombinatsiooni teiste hodi ja osakonna kannete suhtes, et teha kindlaks selle ainulaadsus. Kui hod on samad, kuid osakond on erinev, käsitletakse seda rida ainulaadsena. Kui hod ja osakond on samad rohkem kui ühel real, siis duplikaadi kirjet ei looda ja kuvatakse ainult üks rida.
Rühmitamine klauslite alusel
Saame kasutada grupi klauslit mitme grupeerimise ja koondamise funktsiooniga. Toome mõned näited, kasutades ülaltoodud kahte tabelit, st EMPLOYEE ja Employee_Department.
Näide nr 1
Meessoost töötajate ja naissoost töötajate arv ettevõttes.
SELECT gender, COUNT(`name`) FROM EMPLOYEE GROUP BY gender;
Selle päringu täitmine toob järgmise tulemuse -
COUNT (nimi) | sugu |
5 | Mees |
5 | Naine |
Näide 2
Ettevõtte osakondade arvu saamine nende arvu kahanevas järjekorras.
SELECT department, COUNT(`name`) FROM Employee_Department GROUP BY department ORDER BY COUNT(name) DESC;
Selle päringu täitmine toob järgmise tulemuse -
COUNT (nimi) | osakond |
3 | Teenindus |
3 | Rahandus |
2 | Tehnika |
1 | Toetus |
1 | HR |
Näide 3
Erinevate osakondade arvu saamine ettevõttes sama hodi all krahvide kahanevas järjekorras.
SELECT hod, department, COUNT(`name`) FROM Employee_Department GROUP BY hod, department ORDER BY COUNT(name) DESC;
Selle päringu täitmine toob järgmise tulemuse -
COUNT (nimi) | hod | osakond |
2 | hod1 | Teenindus |
2 | hod2 | Rahandus |
2 | hod3 | Tehnika |
1 | hod5 | Toetus |
1 | hod3 | Teenindus |
1 | hod3 | Rahandus |
1 | hod5 | HR |
SQL-i KOHALIK klausel
HAVING-klausli kasutamine koos klausliga Group By piirab päringu tulemust ridadele, mille väärtus on nimetatudklausli klausliga.
Selle mõistmine näitega muudab selle lihtsamaks -
Näide 4
SELECT * FROM EMPLOYEE GROUP BY gender HAVING gender = “Female”;
Selle päringu täitmine toob järgmise tulemuse -
nimi | vanus | telefon | sugu | e-post |
Mai | 22 | 456 | Naine | |
Ana | 45 | 644 | Naine | |
Potid | 57 | 3456 | Naine | |
Res | 45 | 456 | Naine | |
Wan | 55 | 7789 | Naine |
Näide 5
SELECT * FROM Employee_Department GROUP BY department HAVING department = “Finance”;
Selle päringu täitmine toob järgmise tulemuse -
nimi | hod | osakond |
Mai | hod2 | Rahandus |
Potid | hod2 | Rahandus |
Tung | hod3 | Rahandus |
Järeldus
Kasutades rühma BY lause abil SELECT-i, saame rühmitada samade väärtustega ridu koos liitfunktsioonide, konstantide ja avaldiste kasutamisega.
Soovitatavad artiklid
See on juhend SQL-i GROUP BY klausli kohta. Siin arutatakse näidete ja töötajate tabelite abil, kuidas GROUP BY Clause SQL-is töötab. Võite lisateabe saamiseks vaadata ka järgmisi artikleid -
- SQL-i sisestuspäring
- SQL vaated
- Andmebaas SQL-is
- Tehingud SQL-is