Turinys
Grupės funkcijos yra integruotos į SQL funkcijas, kurios veikia eilučių grupėse ir grąžina visos grupės vertę. Šios funkcijos yra: GROUP, HAVING, COUNT, MAX, MIN, AVG, SUM, DISTINCT.Sąlyga GRUPUOTI PAGAL naudojamas kartu su grupės funkcijomis, norint gauti duomenis, sugrupuotus pagal vieną ar daugiau stulpelių.
Tarpines sumas galima gauti naudojant sąlygą GROUP BY. Užklausa su sąlyga GROUP BY vadinama sugrupuota užklausa, nes ji sugrupuoja šaltinio lentelės duomenis ir sukuria vieną suvestinės eilutę kiekvienai suformuotai grupei. GROUP BY nurodyti stulpeliai vadinami grupavimo stulpeliais.
Tarkime, pardavimo lentelė su šiais laukais
Id | produktas | kaina | kiekis | id pardavėjas
Pavyzdys:
PASIRINKITE SUMĄ (kainą) kaip bendrą pardavimą iš pardavimo
Gaunama visų parduotų pardavimų suma, vertė priskiriama bendram pardavimui
PASIRINKITE SUMĄ (pardavimus) IŠ PARDAVIMŲ GRUPĖS ID darbuotojasKiekvienam darbuotojui sudaroma grupė ir suma apskaičiuojama kiekvienos grupės eilutėse. Ankstesniame pavyzdyje pateikiamas sąrašas su kiekvieno darbuotojo pardavimo suma.
Į užklausą būtų geriau įtraukti pasirinkimo sąrašą darbuotojo vardą, kad žinotumėte, kuriam darbuotojui pardavimo suma atitinka:
PASIRINKITE darbuotojus.pavadinimas, SUM (kaina) AS pardavėjas darbuotojas IŠ pardavimų, darbuotojai Kur pardavimai.darbininkas = darbuotojai.darbdavys GRUPĖ PER ideemployee
Tik:
pastovios vertės
stulpelio funkcijas
grupavimo stulpeliai (stulpeliai, esantys sąlygoje GROUP BY)
arba bet kokia išraiška, pagrįsta aukščiau išdėstytu.
Pavyzdys: Norime, jei turėtume filialus ir norėtume gauti darbuotojų pardavimo sumą, suskirstytą pagal regioną ir miestą:
PASIRINKITE SUMĄ (kainą) kaip pardavimus pagal filialą IŠ PARDAVIMŲ GRUPĖS PAGAL regioną, miestą
Ji pirmiausia sugrupuojama pagal regioną, o kiekviename regione - pagal miestą.
Visos eilutės, kurių grupavimo lauke yra nulinė reikšmė, tampa viena grupe. Tai reiškia, kad ji vertina nulinę vertę kaip bet kokią grupavimo reikšmę.
Sąlyga HAVING
Sąlyga HAVING leidžia mums pasirinkti lentelės eilutes, gautas pagal grupavimo užklausą
Pasirinkimo sąlygomis gali būti rodomi tik šie dalykai:
pastovios vertės
stulpelio funkcijas
grupavimo stulpeliai (stulpeliai, esantys sąlygoje GROUP BY)
arba bet kokia išraiška, pagrįsta aukščiau išdėstytu.
Pavyzdys: norime sužinoti, kurie darbuotojai pardavė daugiau nei 10 000 eurų
PASIRINKITE * IŠ PARDAVIMŲ GRUPĖS PAGAL idemployee, KURIŲ KAINA> 10000
Norėdami gauti tai, ko prašoma, turime apskaičiuoti vidutinį darbuotojų pardavimą. Turime sugrupuoti darbuotojus pagal ID ir apskaičiuoti kiekvieno pardavimo vienam darbuotojui vidurkį, galiausiai iš rezultato turime pasirinkti eilutes, kurių vidurkis yra didesnis nei 10 000.
Kaip grupės užklausa vykdoma viduje?
Pirmiausia duomenų šaltinio lentelė suformuojama pagal FROM sąlygą,
eilutės parenkamos iš duomenų šaltinio pagal WHERE sąlygą,
eilučių grupės sudaromos pagal sąlygą GROUP BY,
Kiekvienoje grupėje gautoje lentelėje gaunama eilutė su reikšmėmis, rodomomis GROUP BY, HAVING sąlygose ir pasirinkimų sąraše,
eilutės parenkamos iš gautos lentelės pagal sąlygą HAVING,
stulpeliai, kurie nerodomi pasirinkimo sąraše, pašalinami iš gautos lentelės,
gautos lentelės eilutės yra užsakomos pagal ***** BY sąlygą
Užklausa tampa grupės užklausa, kai tik pasirodo GROUP BY, HAVING arba stulpelio funkcija.Ar jums patiko ir padėjo ši pamoka?Galite apdovanoti autorių paspausdami šį mygtuką, kad suteiktumėte jam teigiamą tašką