Postgresql rühma autor

Postgresql Ruhma Autor



Postgresql rühm klausli järgi on funktsioon, mida kasutatakse samade andmetega tabeli ridade ühendamiseks/ühendamiseks. Seda klauslit kasutatakse peamiselt dubleerivate andmete eemaldamiseks ja samaaegsuse säilitamiseks. Kui tahame arvutada summat või mõnda muud koondsummat, nagu AVG jne, kasutatakse alati seda klauslirühma, kuna PostgreSQL-is kasutatakse palju klausleid. Kuid iga klausli vahel on hierarhia.

FROM > WHERE > 'GROUP BY' > HAVING > SELECT > DISTINCT > ORDER BY > LIMIT

PostgreSQL-i töö seisneb klauslis „kus” ja „Having”.







Süntaks



VALI veerg

PÄRAST

KUS [tingimused ]

GROUP BY esimene veerg, teine ​​veerg.

JÄRJESTUS esimese veeru, teise veeru järgi.. ;

Näide 1



Funktsioonipõhise rühma mõiste mõistmiseks kasutame siin näidet. Reisijate tabelist on näha, et osadel on perekonnanimed samad. Iga nimi, mis sarnaneb teise nimega, moodustab rühma ja nende tasu lisatakse ühiselt iga sama nime juurde. Seda on kirjeldatud allolevas näites.





>> vali lnimi, SUM (makse) reisijast GROUP BY lname;

Reisija perekonnanimi valitakse sisseehitatud funktsiooni 'SUMMA' abil, mis võtab veeru 'makse'. Ja lisage makse nende inimeste eest, kellel on sama nimi. Lisandub näiteks “Javedi” ja “saadi” palk. Kui “Malik” ja “Shams” puhul mainitakse seda eraldi.



Samamoodi kaaluge tabelit 'haigla'. Tahame linna vanuse järgi rühmitada. Selles näites on üks linn veerus rohkem kui üks kord. Iga linn on rühmitatud sama linnanimega. Linna iga rühma vanused liidetakse ja moodustavad ühe rea.

Haigla:

>> vali linn, SUM (vanus) haiglast GROUP BY linna järgi;

Näide 2

Teise võimalusena, kui valime tabeli reisija ID-ga perekonnanime, on tulemuseks erinev tabel. Sest kui rühmitame mõlemad veerud kokku, kuvatakse iga reisija nimi, kuna iga reisija ID, isegi kui neil on ühine perekonnanimi, on erinev. Summa arvutatakse eraldi veerus, kuid iga reisija tasu on märgitud tema nime ees, sest nime rühmitamist siin ei tehta.

See on mitme veeruga klausli järgi rühmitamise näide. Kuna kui rühmitamiseks on valitud mitu veergu, muudetakse saadud väärtust rühmaga võrreldes ühe tabeli abil.

>> vali id, lnimi, SUM (makse) reisijast GROUP BY id, lname;

Väljundist märkad ühte asja, et esiteks kuvatakse kõik need lnamed, mis on vähelevinud, ja seejärel mainitakse tabelis ära need, kes on samad.

Näide 3

Selles näites on liitumise tingimus ja rühmitamine klausli järgi. Kuna kasutatakse sõna 'liitu', tähendab see, et oleme siin kasutanud kahte tabelit. Üks on 'kaup' ja teine ​​on 'tellimused'.

Üksused:

Tellimused:

Oleme kasutanud konkateneerimismeetodit (kasutatakse kahe stringi ühendamiseks), et ühendada tabeli „elemendid” kahe veeru väärtused tähega „” ja nimetada veeru ühiselt kui „kirjeldus”. See on valikuline; võite need eraldi võtta. Selles päringus identifitseerib märksõna „KASUTAMINE” konkreetse veeru teisest tabelist. Artiklite tabeli aadress on sobitatud tabeli “tellimused” aadressi veeruga. Seda tehakse kahe laua ühendamise teel. Nagu eelmistes näidetes, valitakse mõlemad veerud klausli GROUP BY abil.

>> vali nimi || ‘,’ || kategooria kui Kirjeldus, aadress kirjetest sisemine liitumine Tellimused KASUTAMINE (aadress) GROUP BY aadress, Kirjeldus;

Võite jälgida, et valitakse 5 rida, mille kaupade aadressid ühtivad Tellimuste aadressiga. Seejärel moodustatakse veerus Kirjeldus vastavus aadressi veeruga.

Samamoodi on kahes tabelis veel üks näide konkatenatsioonist vanuseteguriga. Üks on 'reisija' ja teine ​​on 'töötaja'. Konkatenatsioon on ees- ja perekonnanime vahel. Mõlemad nimed on eraldatud kahe nime vahelise tühikuga. Oleme siin võtnud osa tööliste lauast.

Töötaja:

Päring toimib nii, et vanuse veerus kuvatakse koht, kus töötaja fnimi on sobitatud reisijaga, reisija vanus.

>> vali fnimi || ‘’ || reisija.lnimi kui täisnimi, reisija.vanus reisijast SISEMINE liituda töötajaga USING (fname) GROUP BY täisnimi, reisija.vanus ORDER BY reisija.vanus;

Moodustatakse üks rida. Täisnimi luuakse kahe veeru ühendamisel tühikuga ja valitakse aadress, kus reisija fnimi ühtib töötaja fnimega.

Näide 4

See näide käsitleb funktsiooni count () kasutamist tabeli „üksuste” ID-de loendamiseks. See on jällegi rühmitatud tabeli ID järgi.

>> Vali id, COUNT (id) FROM üksustest GROUP BY id;

Id veerus olevad read on jagatud rühmadeks. Iga rühm loendatakse veerus, mitu korda see veerus ilmub. Saadud tabelis luuakse uus veerg nimega “count” ja siia iga rühma ette kirjutatakse loenduse väärtused.

Teie pgAdmin

Nüüd oleme rakendanud mõned näited PostgreSQL-i armatuurlaua poolel. Need näited on mõneti erinevad, kuna moodustavad algses veerus vahesummarea, kui mõni üksus erineb teistest, seega tagastatakse väärtus NULL-na.

Mõelge esimesele näitele; siin oleme loonud veeru nime 'KÕIK', mis on kombineerinud kaks veergu. Aadress ja kategooria. Veerg „KÕIK” loendab mõlema veeru väärtused ühiselt. Aadressi veerg on rühmitatud kui 'lisa' ja kategooria veerg eraldi kui 'kass'. Kuna mõlema kasutatava tabeli veergude nimesid saab omavahel sobitada. Seega pääseb vastava tabeli igale veerule ligi konkreetne objekt.

Käsule rakendatav tingimus sõltub ID-st ja tellimuse numbrist. Kui need ID ja tellimuse numbrid on samad, hangitakse andmed. Samamoodi lisatakse nimele lisatingimus.

>> SELECT o.aadress, kategooria, arv (*) AS “ALL”, GROUPING(o.address) AS “add” , GROUPING (category ) AS “cat” FROM üksustest I, orders o kus i.tellimuse_nr = o. order_id AND i.address= 'Lahore' GROUP BY CUBE (o.aadress, kategooria) ORDER BY 1, 2;

Lahore linna jaoks valitakse üks kategooria. Võimalusi on 4. Mõnikord on mänguasi olemas, kuid mitte aadressi. Ja vastupidi. Kuid on aeg, kus on olemas nii kategooria kui ka aadress.

Nüüd, kui muudame tabelist nime tingimust ja vahetame tabeli muuga. “Items.address” asendatakse “tellimuse aadressiga”, siis on tulemus erinev.

Järeldus

Klauslit 'Postgresql group by' kasutatakse mis tahes koondoperaatori rakendamiseks kollektiivsetele andmetele. Selles artiklis kasutatakse rühmitamist klausli järgi loendusfunktsiooni, liitumiste ning mitme veeru valimise ja rühmitamise abil. Olen kindel, et see õpetus on lugejatele parim vahend mõistmiseks.