SQL GROUP BY sąlyga naudojama identiškiems duomenims suskirstyti į grupes pagal vieną ar daugiau stulpelių. Jis dažniausiai naudojamas su agregacinėmis funkcijomis, tokiomis kaip COUNT() SUM() AVG() MAX() ir MIN(), kad būtų galima atlikti kiekvienos duomenų grupės skaičiavimus.
Pavyzdys: Pirmiausia mes sukurti demonstracinė SQL duomenų bazė ir lentelė, kurioje naudosime komandą GROUP BY.
Užklausa:
SELECT Department SUM(Salary) AS TotalSalary FROM Employees GROUP BY Department;Išvestis:
Sintaksė:
SELECT column1 aggregate_function(column2) FROM table_name WHERE condition GROUP BY column1 column2;- agregate_function: funkcija, naudojama agregacijai pvz. SUM() AVG() COUNT().
- lentelės_pavadinimas: lentelės, iš kurios atrenkami duomenys, pavadinimas.
- sąlyga: Pasirenkama sąlyga filtruoti eilutes prieš grupuojant (naudojama su WHERE).
- 1 stulpelis 2 stulpelis: Stulpeliai, kuriems taikomas grupavimas.
GROUP BY pavyzdžiai
Tarkime, kad turime studentų lentelę. Į šią lentelę įterpsime kai kuriuos duomenų pavyzdžius ir atliksime operacijas naudodami GROUP BY, kad suprastume, kaip ji grupuoja eilutes pagal stulpelį ir kaupia duomenis.
1 pavyzdys: Grupavimas pagal vieną stulpelį
Kai sugrupuojame pagal vieną stulpelį, eilutės su ta pačia verte tame stulpelyje sujungiamos. Pavyzdžiui, grupavimas pagal dalyką parodo, kiek studentų yra įtraukta į kiekvieną dalyką.
Užklausa:
SELECT subject COUNT(*) AS Student_Count FROM Student GROUP BY subject;Išvestis:
Paaiškinimas: Kiekvienas dalykas lentelėje rodomas du kartus, todėl anglų matematikos ir gamtos mokslų skaičius yra 2.
2 pavyzdys: grupavimas pagal kelis stulpelius
Naudojant GROUP BY su keliais stulpeliais, sugrupuojamos eilutės, turinčios tos pačios reikšmės tuose stulpeliuose. Pavyzdžiui, grupuojant pagal dalyką ir metus, eilutės bus sujungtos su ta pačia dalyko ir metų pora ir galime suskaičiuoti, kiek mokinių patenka į kiekvieną grupę.
Užklausa:
SELECT subject year COUNT(*) FROM Student GROUP BY subject year;Išvestis:
Paaiškinimas: Mokiniai, turintys tą patį dalyką ir metus, sugrupuojami. Kadangi kiekviena dalyko ir metų pora atsiranda du kartus, kiekvienai grupei skaičius yra 2.
GRUPĖ BY išlygos turėjimas
Sąlyga HAVING naudojama rezultatams filtruoti po grupavimo, ypač dirbant su agregacinėmis funkcijomis, tokiomis kaip SUM() COUNT() arba AVG(). Skirtingai nei WHERE, sugrupuotiems duomenims taikomos sąlygos.
1 pavyzdys: filtruokite pagal bendrą atlyginimą
Šioje užklausoje sugrupuojame darbuotojus pagal vardus ir rodome tik tuos, kurių bendras atlyginimas didesnis nei 50 000.
SELECT NAME SUM(sal) FROM Emp GROUP BY name HAVING SUM(sal)>50000; Išvestis
Paaiškinimas : Rezultate rodomi tik darbuotojai, kurių bendras atlyginimas viršija 50 000.
2 pavyzdys: filtruokite pagal vidutinį atlyginimą
Šioje užklausoje grupuojame darbuotojus pagal amžių ir rodome tik tas amžiaus grupes, kurių vidutinis atlyginimas viršija 60 000.
SELECT age AVG(sal) AS Average_Salary FROM emp GROUP BY age HAVING AVG(sal) > 60000;Išvestis:
Paaiškinimas: Ši užklausa sugrupuoja darbuotojus pagal amžių ir skaičiuoja vidutinį atlyginimą kiekvienam amžiui. Rodomos tik tos amžiaus grupės, kurių vidutinis atlyginimas didesnis nei 60 000.
Sukurti viktoriną