logo

SQL | GRUPUOTI PAGAL

GROUP BY pareiškimas SQL naudojamas identiškiems duomenims suskirstyti į grupes tam tikrų funkcijų pagalba. y., jei tam tikrame stulpelyje skirtingose ​​eilutėse yra tos pačios reikšmės, tada šios eilutės bus išdėstytos grupėje.

funkcijos

  • GROUP BY sąlyga naudojama su SELECT sakiniu.
  • Užklausoje sąlyga GROUP BY dedama po KUR sąlyga.
  • Užklausoje sąlyga GROUP BY dedama prieš ĮSAKYMAS BY sąlyga, jei naudojama.
  • Užklausoje sąlyga Group BY dedama prieš sąlygą Having.
  • Įdėkite sąlygą turinčioje sąlygoje.

Sintaksė :

PASIRINKTI 1 stulpelį, funkcijos_pavadinimas(2 stulpelis)



Patikrinkite java versiją linux

FROM lentelės_pavadinimas

KUR sąlyga

GROUP BY 1 stulpelis, 2 stulpelis

ORDER BY stulpelis1, stulpelis2;

Paaiškinimas:

  1. funkcijos_pavadinimas : naudojamos funkcijos pavadinimas, pavyzdžiui, SUM() , AVG().
  2. lentelės_pavadinimas : lentelės pavadinimas.
  3. sąlyga : Būklė naudota.

Tarkime, kad turime dvi lenteles Darbuotojų ir Mokinių pavyzdžių lentelė yra tokia, pridėję dvi lenteles, atliksime tam tikras konkrečias operacijas, kad sužinotume apie GROUP BY.

Darbuotojų lentelė:

CREATE TABLE emp ( emp_no INT PRIMARY KEY, name VARCHAR(50), sal DECIMAL(10,2), age INT );>

Įveskite keletą atsitiktinių duomenų į lentelę ir atliksime kai kurias operacijas GROUP BY.

Užklausa:

INSERT INTO emp (emp_no, name, sal, age) VALUES (1, 'Aarav', 50000.00, 25), (2, 'Aditi', 60000.50, 30), (3, 'Amit', 75000.75, 35), (4, 'Anjali', 45000.25, 28), (5, 'Chetan', 80000.00, 32), (6, 'Divya', 65000.00, 27), (7, 'Gaurav', 55000.50, 29), (8, 'Isha', 72000.75, 31), (9, 'Kavita', 48000.25, 26), (10, 'Mohan', 83000.00, 33);>

Išvestis:

Mokinių lentelė:

Užklausa:

CREATE TABLE student ( name VARCHAR(50), year INT, subject VARCHAR(50) ); INSERT INTO student (name, year, subject) VALUES ('Alice', 1, 'Mathematics'), ('Bob', 2, 'English'), ('Charlie', 3, 'Science'), ('David', 1, 'History'), ('Emily', 2, 'Art'), ('Frank', 3, 'Computer Science');>

Išvestis:

Grupuoti pagal vieną stulpelį

Grupuoti pagal vieną stulpelį reiškia, kad visos eilutės, turinčios vienodą tik to konkretaus stulpelio reikšmę, pateikiamos vienoje grupėje. Apsvarstykite užklausą, kaip parodyta žemiau:

Užklausa:

SELECT NAME, SUM(SALARY) FROM emp GROUP BY NAME;>

Aukščiau pateikta užklausa duos tokią išvestį:

dydžio latekso šriftas

Kaip matote aukščiau pateiktame išvestyje, eilutės su pasikartojančiais PAVADINImais yra sugrupuotos pagal tą patį PAVADINIMĄ, o jas atitinkantis ATLYGINIMAS yra pasikartojančių eilučių ATLYGINIO suma. SUM() funkcija čia naudojama sumai apskaičiuoti.

Grupuoti pagal kelis stulpelius

Pavyzdžiui, sugrupuoti pagal kelis stulpelius GROUP BY 1 stulpelis, 2 stulpelis . Tai reiškia, kad visos eilutės turi būti išdėstytos tomis pačiomis stulpelių reikšmėmis 1 stulpelis ir 2 stulpelis vienoje grupėje. Apsvarstykite toliau pateiktą užklausą:

Užklausa:

SELECT SUBJECT, YEAR, Count(*) FROM Student GROUP BY SUBJECT, YEAR;>

Išvestis:

Išvestis : Kaip matote aukščiau esančiame išvestyje, studentai, turintys tą patį SUBJECT ir YEAR, patenka į tą pačią grupę. O tie, kurių vienintelis TEMA yra tas pats, bet ne METAI, priklauso skirtingoms grupėms. Taigi čia mes sugrupavome lentelę pagal du stulpelius arba daugiau nei vieną stulpelį.

GRUPĖ BY išlygos turėjimas

Žinome, kad WHERE sąlyga naudojama sąlygoms pateikti stulpeliuose, bet ką daryti, jei norime pateikti sąlygas grupėms? Čia pradedama naudoti sąlyga HAVING. Galime naudoti sąlygą HAVING, kad sudarytume sąlygas nuspręsti, kuri grupė bus galutinio rezultato rinkinio dalis. Be to, su WHERE sąlyga negalime naudoti suvestinių funkcijų, tokių kaip SUM(), COUNT() ir kt. Taigi, jei norime naudoti bet kurią iš šių funkcijų sąlygose, turime naudoti sąlygą HAVING.

Sintaksė :

PASIRINKTI 1 stulpelį, funkcijos_pavadinimas(2 stulpelis)

sujungimo algoritmas

FROM lentelės_pavadinimas

KUR sąlyga

GROUP BY 1 stulpelis, 2 stulpelis

TURINTI būklę

ORDER BY stulpelis1, stulpelis2;

Paaiškinimas:

  1. funkcijos_pavadinimas : naudojamos funkcijos pavadinimas, pavyzdžiui, SUM() , AVG().
  2. lentelės_pavadinimas : lentelės pavadinimas.
  3. sąlyga : Būklė naudota.

Pavyzdys :

Kaip matote aukščiau pateiktoje išvestyje, tik viena grupė iš trijų grupių atsiranda rezultatų rinkinyje, nes tai yra vienintelė grupė, kurioje ATLYGINIO suma yra didesnė nei 3000. Taigi mes panaudojome sąlygą HAVING, norėdami pateikti šią sąlygą kaip sąlyga turi būti dedama ant grupių, o ne į stulpelius.