Postgresql gruppe af

Postgresql Gruppe Af



Postgresql group by clause er en funktion, der bruges til at forene/kombinere de rækker i tabellen, der har de samme data. Denne klausul bruges hovedsageligt til at fjerne duplikerede data og til at opretholde samtidighed. Når vi ønsker at beregne sum, eller ethvert andet aggregat som AVG osv., bruges denne gruppe for klausul altid, da der er mange klausuler brugt i PostgreSQL. Men der eksisterer et hierarki mellem hver klausul.

FRA > HVOR > 'GRUPPER EFTER' > HAR > VÆLG > DISTINKT > BESTIL EFTER > GÆNSE

Funktionen af ​​PostgreSQL ligger inden for 'hvor' og 'Having'-klausulen.







Syntaks



VÆLG kolonne

FRA dumytable

HVOR [betingelser ]

GRUPPE EFTER første kolonne, anden kolonne..

BESTIL EFTER første kolonne, anden kolonne.. ;

Eksempel 1



For at forstå begrebet gruppen efter funktion bruger vi et eksempel her. I tabellen over passagerer kan du se, at efternavnene er de samme for nogle personer. Hvert navn, der ligner et andet, danner en gruppe, og deres betaling tilføjes samlet mod hvert samme navn. Dette er uddybet i nedenstående eksempel.





>> vælg lnavn, SUM (betaling) fra passager GRUPPE EFTER lnavn;

Passagerens efternavn vælges ved brug af en indbygget funktion 'SUM', der tager kolonnen 'betaling'. Og tilføj betalingen for de personer, der har samme navn. For eksempel tilføjes lønnen for 'Javed' og 'saad'. Hvorimod for 'Malik' og 'Shams', er det individuelt nævnt.



Tilsvarende overveje et bord 'hospital'. Vi ønsker at gruppere byen for alderen. I dette eksempel eksisterer en by mere end én gang i en kolonne. Hver by er grupperet med det samme bynavn. Aldre for hver gruppe af byen tilføjes og danner en enkelt række.

Hospital:

>> vælg by, SUM (alder) fra hospital GRUPPE FOR by;

Eksempel 2

Alternativt, hvis vi vælger efternavnet med id'et fra bordpassageren, vil resultatet være en anden tabel. For når vi grupperer begge kolonner sammen, vil den vise hver passagers navn, fordi id'et for hver passager, selv med et fælles efternavn, er forskelligt. Summen udregnes i en separat kolonne, men hver passagers betaling er nævnt foran hans navn, fordi grupperingen af ​​lname ikke er foretaget her.

Dette er et eksempel på gruppe efter klausul med flere kolonner. Fordi når flere kolonner er valgt til gruppering, ændres den resulterende værdi sammenlignet med gruppen af ​​en enkelt tabel.

>> vælg id, lname, SUM (betaling) fra passager GROUP BY id, lname;

Fra outputtet vil du bemærke en ting, at for det første vises alle de lname, der er usædvanlige, og derefter de, der er ens, er nævnt i tabellen.

Eksempel 3

Dette eksempel har en joinbetingelse og en gruppe efter klausul. Da 'join' bruges, betyder det, at vi har brugt to tabeller her. Den ene er 'vare', og den anden er 'ordrer'.

Varer:

Ordre:% s:

Vi har brugt en sammenkædningsmetode (brugt til at forbinde to strenge) til at forbinde værdierne af to kolonner i tabellen 'elementer' med ',' og navngive kolonnen samlet som 'beskrivelse'. Det er valgfrit; du kan tage dem separat. I denne forespørgsel identificerer søgeordet 'USING' den specifikke kolonne fra den anden tabel. Adressen fra varetabellen matches med adressekolonnen i 'ordrer'-tabellen. Dette gøres ved at lave en join mellem to borde. Som tidligere eksempler vil begge kolonner blive valgt af GROUP BY-sætningen.

>> vælg navn || ',' || kategori som Beskrivelse, adresse fra varer indre join Ordrer BRUG AF (adresse) GRUPPER EFTER adresse, Beskrivelse;

Du kan observere, at 5 rækker vil blive valgt med adressen på varer matchet med ordreadressen. Og så vil kolonnen Beskrivelse blive dannet korrespondance med adressekolonnen.

På samme måde er der et andet eksempel på sammenkædning med aldersfaktoren i to tabeller. Den ene er 'passager', og den anden er 'arbejder'. Sammenkædning er mellem for- og efternavnet. Begge disse navne er adskilt gennem mellemrummet mellem to navne. Vi har taget en del af arbejderbordet her.

Arbejder:

Forespørgslen vil fungere, så det punkt, hvor f-navnet på arbejderen matches med passageren, alderen fra passageren, vises i alderskolonnen.

>> vælg fnavn || ' ' || passager.lname som fuldt_navn, passager.alder fra passager INDRE slutte sig til arbejderen BRUGER (fnavn) GRUPPER EFTER fuld_navn, passager.alder BESTIL EFTER passager.alder;

Der dannes en række. Det fulde_navn oprettes ved at forbinde to kolonner med mellemrum, og adressen vælges, hvor passagerens fnavn stemmer overens med arbejderens fnavn.

Eksempel 4

Dette eksempel omhandler brugen af ​​en count () funktion til at tælle id'erne i tabellen 'varer'. Dette er igen grupperet efter tabellens id.

>> Vælg id, COUNT (id) FRA varer GRUPPER EFTER id;

Rækkerne i id-kolonnen er opdelt i grupper. Hver gruppe tælles i kolonnen, hvor mange gange den forekommer i kolonnen. I den resulterende tabel oprettes en ny kolonne med et 'tælle' navn, og værdierne for optællingen skrives her foran hver gruppe.

Din pgAdmin

Nu har vi anvendt nogle eksempler på dashboard-siden af ​​PostgreSQL. Disse eksempler er forskellige på en eller anden måde, fordi de danner en subtotalrække fra den oprindelige kolonne, når et af elementerne adskiller sig fra de andre, så værdien returneres som NULL.

Overvej det første eksempel; her har vi oprettet et kolonnenavn 'ALLE', der har kombineret to kolonner. En adresse og en kategori. 'ALL'-kolonnen tæller værdierne i begge kolonner samlet. Adressekolonnen er grupperet som 'tilføj', og kategorikolonnen er separat grupperet som 'kat'. Som kolonnenavne på begge anvendte tabeller kan matches med hinanden. Så hver kolonne i den respektive tabel er tilgået af et bestemt objekt.

Betingelsen anvendt på kommandoen afhænger af id'et og ordrenummeret. Hvor både disse id- og ordrenumre er de samme, hentes dataene. På samme måde tilføjes en yderligere betingelse for navnet.

>> VÆLG o.adresse, kategori, tæller (*) SOM “ALLE”, GRUPPERERING(o.adresse) SOM “tilføj” , GRUPPERERING (kategori ) SOM “kat” FRA varer I, ordrer o hvor i.ordre_nr = o. order_id OG i.address= 'Lahore' GRUPPER EFTER CUBE (o.address, kategori) BESTIL EFTER 1, 2;

For byen Lahore er én kategori valgt. Der er 4 muligheder. Nogle gange er legetøjet til stede, men ikke adressen. Og omvendt. Men der eksisterer et tidspunkt, hvor både kategori og adresse er til stede.

Nu, hvis vi ændrer tilstanden af ​​navnet fra en tabel og skifter tabellen med en anden. “Items.address” erstattes af “order.address”, så er resultatet anderledes.

Konklusion

Klausulen 'Postgresql group by' bruges til at anvende enhver aggregeret operatør på de samlede data. Denne artikel bruger gruppe for klausul med tællefunktion, joinforbindelser og valg og gruppering af flere kolonner. Jeg er sikker på, at denne tutorial vil være det bedste middel til forståelse for læserne.