Postgresql csoportja

Postgresql Csoportja



A Postgresql klauzula szerinti csoportosítás egy olyan szolgáltatás, amely a táblázat azon sorainak egyesítésére/egyesítésére szolgál, amelyek ugyanazokat az adatokat tartalmazzák. Ezt a záradékot elsősorban az ismétlődő adatok eltávolítására és az egyidejűség fenntartására használják. Amikor összeget, vagy bármilyen más aggregátumot, például AVG-t stb. akarunk kiszámolni, mindig ezt a záradék szerinti csoportot használjuk, mivel a PostgreSQL-ben számos záradékot használnak. De az egyes záradékok között létezik egy hierarchia.

FROM > WHERE > „GROUP BY” > HAVING > SELECT > DISTINCT > ORDER BY > LIMIT

A PostgreSQL működése a „hol” és a „Having” záradékon belül van.







Szintaxis



SELECT oszlop

Dumytable-tól

HOL [feltételek ]

GROUP BY első oszlop, második oszlop..

RENDEZÉS első oszlop, második oszlop szerint.. ;

1. példa



A funkció szerinti csoport fogalmának megértéséhez itt egy példát használunk. Az utasok táblázatában látható, hogy egyes emberek vezetéknevei megegyeznek. Minden név, amely hasonlít egy másikhoz, egy csoportot alkot, és a fizetésük együttesen hozzáadódik minden azonos névhez. Ezt az alábbi példa részletezi.





>> válasszon lname, SUM (fizetés) az utastól GROUP BY lname;

Az utas vezetéknevét a „SUM” beépített függvény segítségével választjuk ki, amely a „fizetés” oszlopot veszi át. És add hozzá az azonos nevű emberek fizetését. Például hozzáadódik a „Javed” és a „saad” fizetése. Míg a „Malik” és a „Shams” esetében külön említik.



Hasonlóképpen tekintsünk egy asztalt „kórháznak”. A várost a kor szerint szeretnénk csoportosítani. Ebben a példában egy város többször is szerepel egy oszlopban. Minden város ugyanazzal a városnévvel van csoportosítva. A város egyes csoportjainak életkora összeadódik, és egyetlen sort alkot.

Kórház:

>> város kiválasztása, SUM (életkor) a kórházból GROUP BY város;

2. példa

Alternatív megoldásként, ha kiválasztjuk a vezetéknevet az id-vel az asztali utasból, az eredmény egy másik tábla lesz. Mert ha mindkét oszlopot csoportosítjuk, akkor minden utas neve megjelenik, mert minden utas azonosítója, még ha közös vezetéknév is van, más. Az összeget külön oszlopban számítják ki, de minden utas fizetése a neve előtt szerepel, mert itt nem történik meg a név csoportosítása.

Ez egy példa a több oszlopot tartalmazó záradék szerinti csoportosításra. Mert ha több oszlopot jelöl ki a csoportosításhoz, az eredményül kapott érték egyetlen táblázatban módosul a csoporthoz képest.

>> azonosító, név, SZUM (fizetés) kiválasztása az utastól GROUP BY id, lname;

A kimenetből észrevehet egy dolgot, hogy először az összes nem gyakori lname megjelenik, majd a táblázatban megemlítik azokat, amelyek azonosak.

3. példa

Ebben a példában van egy csatlakozási feltétel és egy záradék szerinti csoportosítás. A „csatlakozás” kifejezés azt jelenti, hogy itt két táblát használtunk. Az egyik a „tétel”, a másik a „megrendelés”.

Elemek:

Megrendelések:

Egy összefűzési módszert alkalmaztunk (két karakterlánc összekapcsolására használva), hogy az „elemek” tábla két oszlopának értékét „” jellel összekapcsoljuk, és az oszlopot együttesen „leírásnak” nevezzük el. Ez nem kötelező; külön veheted őket. Ebben a lekérdezésben a „USING” kulcsszó azonosítja az adott oszlopot a másik táblázatból. A tételtáblázat címe megegyezik a „rendelések” tábla cím oszlopával. Ez úgy történik, hogy két táblát összekapcsolunk. Az előző példákhoz hasonlóan mindkét oszlopot a GROUP BY záradék fogja kiválasztani.

>> válasszon nevet || ‘,’ || kategória mint Leírás, cím a tételekből belső csatlakozás Rendelések HASZNÁLATA (cím) GROUP BY cím, Leírás;

Megfigyelhető, hogy 5 olyan sor kerül kiválasztásra, amelyekben a tételek címe megegyezik a Megrendelések címével. Ezután a Leírás oszlop megfelel a cím oszlopnak.

Hasonlóképpen van egy másik példa az életkor tényezővel való összefűzésre két táblázatban. Az egyik az „utas”, a másik a „munkás”. Az összefűzés a keresztnév és a vezetéknév között történik. Mindkét nevet a két név közötti szóköz választja el. Itt vettük a munkásasztal egy részét.

Munkás:

A lekérdezés úgy fog működni, hogy az életkor oszlopban megjelenik az a pont, ahol a dolgozó fneve az utassal megegyezik, az utas életkora.

>> válasszon fname || ‘’ || utas.lnév teljes_névként, utas.életkor utastól BELSŐ csatlakozni dolgozóhoz USING (fname) GROUP BY teljes_név, utas.kor ORDER BY utas.kor szerint;

Egy sor alakul ki. A teljes_név úgy jön létre, hogy két oszlopot szóközzel összekapcsolunk, és kiválasztjuk azt a címet, ahol az utas fneve megegyezik a dolgozó fnevével.

4. példa

Ez a példa a count () függvény használatával foglalkozik az „elemek” tábla azonosítóinak megszámlálására. Ez ismét a táblázat azonosítója szerint van csoportosítva.

>> Válassza ki az azonosítót, COUNT (id) FROM tételekből GROUP BY id;

Az id oszlop sorai csoportokra vannak osztva. Minden csoport megszámlálódik abban az oszlopban, hogy hányszor jelenik meg az oszlopban. Az eredményül kapott táblázatban egy új oszlop jön létre „count” névvel, és az egyes csoportok elé ide írjuk a számlálás értékeit.

A pgAdminod

Most néhány példát alkalmaztunk a PostgreSQL műszerfali oldalán. Ezek a példák bizonyos értelemben különböznek egymástól, mivel egy részösszeg sort alkotnak az eredeti oszlopból, amikor az elemek bármelyike ​​eltér a többitől, így az érték NULL-ként kerül visszaadásra.

Tekintsük az első példát; itt létrehoztunk egy „ALL” oszlopnevet, amely két oszlopot egyesített. Egy cím és egy kategória. Az „ALL” oszlop együttesen számolja a mindkét oszlopban lévő értékeket. A címoszlop „hozzáadás”-ként, a kategóriaoszlop pedig külön „macska”-ként van csoportosítva. Mivel mindkét használt tábla oszlopnevét össze lehet egyeztetni egymással. Tehát a megfelelő tábla minden oszlopát egy adott objektum éri el.

A parancsra alkalmazott feltétel az azonosítótól és a rendelésszámtól függ. Ha ez az azonosító és a rendelési szám megegyezik, a rendszer lekéri az adatokat. Hasonlóképpen egy további feltétel is hozzáadódik a névhez.

>> SELECT o.cím, kategória, szám (*) AS “ALL”, GROUPING(o.address) AS “add” , GROUPING (category ) AS “cat” FROM I tételekből, rendelések o ahol i.rend_no = o. order_id AND i.address= 'Lahore' GROUP BY CUBE (o.cím, kategória) ORDER BY 1, 2;

Lahore városára egy kategória van kiválasztva. 4 lehetőség van. Néha a játék jelen van, de a cím nem. És fordítva. De van idő, amikor a kategória és a cím egyaránt jelen van.

Most, ha megváltoztatjuk a név feltételét egy táblából, és a táblát másra cseréljük. Az „elemek.cím” helyett az „order.address” lép, akkor az eredmény más.

Következtetés

A „Postgresql group by” záradék bármely összesített operátor alkalmazására szolgál a kollektív adatokra. Ez a cikk a csoportos záradékot használja számlálási funkcióval, összekapcsolással, valamint több oszlop kiválasztásával és csoportosításával. Biztos vagyok benne, hogy ez az oktatóanyag a legjobb módja annak, hogy megértsék az olvasókat.