Postgresql grupė pagal

Postgresql Grupe Pagal



Postgresql grupė pagal sąlygą yra funkcija, naudojama sujungti / sujungti tas lentelės eilutes, kuriose yra tie patys duomenys. Ši sąlyga daugiausia naudojama siekiant pašalinti pasikartojančius duomenis ir išlaikyti vienodumą. Kai norime apskaičiuoti sumą ar bet kokį kitą suvestinį rodiklį, pvz., AVG ir tt, ši grupė pagal sakinį visada naudojama, nes PostgreSQL naudojama daug sąlygų. Tačiau tarp kiekvienos sąlygos egzistuoja hierarchija.

IŠ > KUR > „GRUPUOTI PAGAL“ > TURIMAS > PASIRINKTI > ATSKIRTI > UŽSAKYTI PAGAL > APRIBOTI

„PostgreSQL“ veikia „kur“ ir „Turėti“ sąlygoje.







Sintaksė



PASIRINKTI stulpelį

IŠ manekeno stalo

KUR [sąlygos]

GROUP BY pirmas stulpelis, antras stulpelis..

UŽSAKYTI PAGAL pirmą stulpelį, antrą stulpelį.. ;

1 pavyzdys



Norėdami suprasti grupės pagal funkciją sąvoką, naudojame pavyzdį. Keleivių lentelėje matosi, kad kai kurių pavardės vienodos. Kiekvienas vardas, panašus į kitą, sudaro grupę, o jų mokėjimas pridedamas prie kiekvieno to paties pavadinimo. Tai išsamiai aprašyta toliau pateiktame pavyzdyje.





>> pasirinkti lvardą, SUM (mokėjimą) iš keleivio GROUP BY lname;

Keleivio pavardė parenkama naudojant integruotą funkciją „SUM“, kuri paima stulpelį „mokėjimas“. Ir pridėkite mokėjimą už tuos pačius vardus turinčius žmones. Pavyzdžiui, pridedamas „Javed“ ir „saad“ atlyginimas. Tuo tarpu „Malik“ ir „Shams“ jis minimas atskirai.



Panašiai apsvarstykite stalą „ligoninė“. Norime sugrupuoti miestą pagal amžių. Šiame pavyzdyje vienas miestas stulpelyje egzistuoja daugiau nei vieną kartą. Kiekvienas miestas yra sugrupuotas tuo pačiu miesto pavadinimu. Kiekvienos miesto grupės amžius pridedamas ir sudaro vieną eilutę.

Ligoninė:

>> pasirinkite miestą, SUM (amžių) iš ligoninės GROUP BY miestą;

2 pavyzdys

Arba, jei pasirinksime pavardę su ID iš lentelės keleivio, gausime kitą lentelę. Nes kai sugrupuosime abu stulpelius, bus rodomas kiekvieno keleivio vardas, nes kiekvieno keleivio, net ir turinčio bendrą pavardę, ID yra skirtingas. Suma skaičiuojama atskirame stulpelyje, tačiau prieš jo vardą ir pavardę nurodoma kiekvieno keleivio įmoka, nes lvardas čia negrupuojamas.

Tai yra grupės pagal sąlygą su keliais stulpeliais pavyzdys. Nes kai grupavimui pasirenkami keli stulpeliai, gauta reikšmė, palyginti su grupe, pakeičiama viena lentele.

>> pasirinkite id, lname, SUM (mokėjimą) iš keleivio GROUP BY id, lname;

Iš išvesties pastebėsite vieną dalyką, kad pirmiausia rodomi visi neįprasti vardai, o tada lentelėje minimi tie patys vardai.

3 pavyzdys

Šiame pavyzdyje yra prisijungimo sąlyga ir grupė pagal sąlygą. Kadangi naudojamas „prisijungti“, tai reiškia, kad čia naudojome dvi lenteles. Vienas yra „prekė“, o kitas – „užsakymai“.

Elementai:

Užsakymai:

Naudojome sujungimo metodą (naudojamą dviejų eilučių sujungimui), norėdami sujungti dviejų lentelės „elementų“ stulpelių reikšmes su „“ ir pavadinti stulpelį bendrai kaip „aprašas“. Tai neprivaloma; galite pasiimti juos atskirai. Šioje užklausoje raktinis žodis „USING“ identifikuoja konkretų stulpelį iš kitos lentelės. Prekių lentelės adresas suderinamas su lentelės „užsakymai“ adresų stulpeliu. Tai daroma sujungiant dvi lenteles. Kaip ir ankstesniuose pavyzdžiuose, abu stulpeliai bus parinkti pagal GROUP BY sąlygą.

>> pasirinkite vardą || ‘,’ || kategorija kaip Aprašymas, adresas iš elementų vidinis sujungimas Užsakymai NAUDOJANT (adresas) GROUP BY adresą, Aprašymas;

Galite pastebėti, kad bus pasirinktos 5 eilutės, kuriose prekių adresai sutampa su Užsakymų adresais. Tada stulpelyje Aprašymas bus suformuota korespondencija su adreso stulpeliu.

Panašiai yra dar vienas sujungimo su amžiaus koeficientu pavyzdys dviejose lentelėse. Vienas yra „keleivis“, o kitas yra „darbuotojas“. Sujungimas yra tarp vardo ir pavardės. Abu šie pavadinimai yra atskirti tarpu tarp dviejų pavadinimų. Čia paėmėme dalį darbininkų stalo.

Darbuotojas:

Užklausa veiks taip, kad amžiaus stulpelyje bus rodomas taškas, kuriame darbuotojo fvardas sutampa su keleiviu, keleivio amžius.

>> pasirinkite fvardą || ‘’ || keleivis.lvardas kaip pilnas_vardas, keleivis.amžius iš keleivio VIDINIS prisijungti darbuotojas USING (fname) GROUP BY pilnas_vardas, keleivio.amžius ORDER BY keleivio.amžius;

Suformuojama viena eilutė. Pilnas_vardas sukuriamas sujungiant du stulpelius tarpais ir pasirenkamas adresas ten, kur keleivio fvardas sutampa su darbuotojo fvardu.

4 pavyzdys

Šiame pavyzdyje aprašomas funkcijos count () naudojimas norint suskaičiuoti lentelės „elementai“ ID. Tai vėlgi grupuojama pagal lentelės ID.

>> Pasirinkite id, COUNT (id) IŠ prekių GROUP BY id;

ID stulpelio eilutės yra suskirstytos į grupes. Kiekviena grupė skaičiuojama stulpelyje, kiek kartų ji pasirodo stulpelyje. Gautoje lentelėje sukuriamas naujas stulpelis pavadinimu „count“ ir čia prieš kiekvieną grupę įrašomos skaičiaus reikšmės.

Jūsų pgAdminas

Dabar mes pritaikėme keletą pavyzdžių PostgreSQL prietaisų skydelio pusėje. Šie pavyzdžiai tam tikra prasme skiriasi, nes jie sudaro tarpinės sumos eilutę iš pradinio stulpelio, kai kuris nors iš elementų skiriasi nuo kitų, todėl vertė grąžinama kaip NULL.

Apsvarstykite pirmąjį pavyzdį; čia sukūrėme stulpelio pavadinimą „ALL“, kuris sujungė du stulpelius. Adresas ir kategorija. Stulpelyje „ALL“ skaičiuojamos abiejų stulpelių reikšmės kartu. Adreso stulpelis sugrupuotas kaip „pridėti“, o kategorijų stulpelis atskirai sugrupuotas kaip „katė“. Kadangi abiejų naudojamų lentelių stulpelių pavadinimai gali būti suderinti vienas su kitu. Taigi kiekvieną atitinkamos lentelės stulpelį pasiekia konkretus objektas.

Komandai taikoma sąlyga priklauso nuo ID ir užsakymo numerio. Kai šie ID ir užsakymo numeriai yra vienodi, duomenys paimami. Panašiai pavadinimui taip pat pridedama papildoma sąlyga.

>> PASIRINKITE o.adresą, kategoriją, skaičiuokite (*) KAIP 'VISKAS', GRUPAVIMAS(o.adresas) AS 'add' , GROUPING (category ) KAIP 'katė' IŠ prekių I, užsakymai o kur i.užsakymo_ne = o. order_id AND i.address= 'Lahore' GROUP BY CUBE (o.adresas, kategorija) ORDER BY 1, 2;

Lahoro miestui pasirenkama viena kategorija. Yra 4 galimybės. Kartais žaislas yra, bet ne adresas. Ir atvirkščiai. Tačiau yra laikas, kai yra ir kategorija, ir adresas.

Dabar, jei pakeisime vardo sąlygą iš lentelės ir pakeisime lentelę kita. „Prekės.adresas“ pakeičiamas „užsakymas.adresas“, tada rezultatas skiriasi.

Išvada

Sąlyga „Postgresql group by“ naudojama bet kuriam suvestiniam operatoriui taikyti kolektyviniams duomenims. Šiame straipsnyje naudojamas grupavimas pagal sąlygą su skaičiavimo funkcija, sujungimai ir kelių stulpelių pasirinkimas bei grupavimas. Esu tikras, kad ši pamoka bus geriausias būdas suprasti skaitytojus.