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

  1. VALI avaldus - SQL-i käsupäring
  2. table_name - viidatava andmebaasi tabeli nimi
  3. tingimused - viidake kontrollitavatele tingimustele
  4. GROUP BY - klausel samade ridade rühmitamiseks
  5. 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

nimivanustelefonsugue-post
John23123Mees
Mai22456Naine
Ana45644Naine
Potid573456Naine
Res45456Naine
Tan782456Mees
Ran345899Mees
Wan557789Naine
Tung325689Mees
Chung214678Mees

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

nimihodosakond
Johnhod1Teenindus
Maihod2Rahandus
Anahod1Teenindus
Potidhod2Rahandus
Reshod3Tehnika
Tanhod5Toetus
Ranhod3Teenindus
Wanhod3Tehnika
Tunghod3Rahandus
Chunghod5HR

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 -

hodosakond
hod1Teenindus
hod2Rahandus
hod3Tehnika
hod5Toetus
hod3Teenindus
hod3Rahandus
hod5HR

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
5Mees
5Naine

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
3Teenindus
3Rahandus
2Tehnika
1Toetus
1HR

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)hodosakond
2hod1Teenindus
2hod2Rahandus
2hod3Tehnika
1hod5Toetus
1hod3Teenindus
1hod3Rahandus
1hod5HR

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 -

nimivanustelefonsugue-post
Mai22456Naine
Ana45644Naine
Potid573456Naine
Res45456Naine
Wan557789Naine

Näide 5

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

Selle päringu täitmine toob järgmise tulemuse -

nimihodosakond
Maihod2Rahandus
Potidhod2Rahandus
Tunghod3Rahandus

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 -

  1. SQL-i sisestuspäring
  2. SQL vaated
  3. Andmebaas SQL-is
  4. Tehingud SQL-is