Postgresql gruppe av

Postgresql Gruppe Av



Postgresql group by klausul er en funksjon som brukes til å forene/kombinere de radene i tabellen som har samme data. Denne klausulen brukes hovedsakelig til å fjerne dupliserte data og for å opprettholde samtidighet. Når vi ønsker å beregne sum, eller andre aggregater som AVG, etc., blir denne gruppe for klausul alltid brukt da det er mange klausuler som brukes i PostgreSQL. Men det eksisterer et hierarki mellom hver klausul.

FRA > HVOR > «GRUPPER ETTER» > Å HA > VELG > DISTINKT > BESTILL ETTER > GRENSE

Arbeidet med PostgreSQL ligger innenfor 'hvor' og 'Haing'-klausulen.







Syntaks



VELG kolonne

FRA dumytable

HVOR [betingelser ]

GRUPPE ETTER første kolonne, andre kolonne..

BESTILL ETTER første kolonne, andre kolonne.. ;

Eksempel 1



For å forstå konseptet med gruppen etter funksjon bruker vi et eksempel her. I tabellen over passasjerer kan du se at etternavnene er de samme for noen personer. Hvert navn som ligner på et annet, danner en gruppe, og betalingen deres legges samlet mot hvert samme navn. Dette er utdypet i eksemplet nedenfor.





>> velg lname, SUM (betaling) fra passasjer GROUP BY lname;

Passasjerens etternavn velges ved bruk av en innebygd funksjon 'SUM' som tar kolonnen 'betaling'. Og legg til betalingen for de personene som har samme navn. For eksempel blir lønnen til 'Javed' og 'saad' lagt til. Mens for 'Malik' og 'Shams' er det nevnt individuelt.



På samme måte kan du vurdere et bord som 'sykehus'. Vi ønsker å gruppere byen for alderen. I dette eksemplet eksisterer én by mer enn én gang i en kolonne. Hver by er gruppert med samme bynavn. Alderen til hver gruppe i byen legges til og danner en enkelt rad.

Sykehus:

>> velg by, SUM (alder) fra sykehus GRUPPE FOR by;

Eksempel 2

Alternativt, hvis vi velger etternavnet med id fra tabellpassasjeren, vil resultatet bli en annen tabell. Fordi når vi grupperer begge kolonnene sammen, vil den vise hver passasjers navn fordi ID-en for hver passasjer, selv om de har et felles etternavn, er forskjellig. Summen beregnes i en egen kolonne, men hver passasjers betaling er nevnt foran navnet hans fordi grupperingen av lnavn ikke gjøres her.

Dette er et eksempel på gruppe for klausul med flere kolonner. Fordi når flere kolonner er valgt for gruppering, endres den resulterende verdien sammenlignet med gruppen med en enkelt tabell.

>> velg id, lname, SUM (betaling) fra passasjer GROUP BY id, lname;

Fra utdataene vil du legge merke til én ting at for det første vises alle de uvanlige navnene, og deretter blir de som er like nevnt i tabellen.

Eksempel 3

Dette eksemplet har en sammenføyningsbetingelse og en gruppe etter klausul. Ettersom «join» brukes, betyr det at vi har brukt to tabeller her. Den ene er 'vare', og den andre er 'ordrer'.

Varer:

Bestillinger:

Vi har brukt en sammenkoblingsmetode (brukt til å koble sammen to strenger) for å slå sammen verdiene til to kolonner i 'elementer'-tabellen med ',' og navngi kolonnen samlet som 'beskrivelse'. Det er valgfritt; du kan ta dem separat. I denne spørringen identifiserer nøkkelordet «USING» den spesifikke kolonnen fra den andre tabellen. Adressen fra varetabellen samsvarer med adressekolonnen i 'ordre'-tabellen. Dette gjøres ved å lage en sammenføyning mellom to bord. Som tidligere eksempler, vil begge kolonnene bli valgt av GROUP BY-klausulen.

>> velg navn || ',' || kategori som Beskrivelse, adresse fra elementer innvendig sammenføyning Bestillinger BRUK AV (adresse) GRUPPER ETTER adresse, Beskrivelse;

Du kan se at 5 rader vil bli valgt med adressen til varene matchet med adressen til ordrene. Og så vil Beskrivelse-kolonnen danne korrespondanse med adressekolonnen.

På samme måte er det et annet eksempel på sammenkobling med aldersfaktoren i to tabeller. Den ene er 'passasjer', og den andre er 'arbeider'. Sammenkobling er mellom for- og etternavnet. Begge disse navnene er atskilt gjennom mellomrommet mellom to navn. Vi har tatt en del av arbeiderbordet her.

Arbeider:

Spørringen vil fungere slik at punktet der f-navnet til arbeideren samsvarer med passasjeren, alderen fra passasjeren, vises i alderskolonnen.

>> velg fname || ' ' || passasjer.lname som fullt_navn, passasjer.alder fra passasjer INNER join worker USING (fname) GROUP BY full_name, passenger.age ORDER BY passenger.age;

En rad er dannet. Full_name opprettes ved å slå sammen to kolonner med mellomrom, og adressen velges der f-navnet til passasjeren samsvarer med f-navnet til arbeideren.

Eksempel 4

Dette eksemplet omhandler bruk av en tellefunksjon () for å telle ID-ene til 'varer'-tabellen. Dette er igjen gruppert etter tabellens ID.

>> Velg id, COUNT (id) FRA elementer GRUPPE ETTER id;

Radene i id-kolonnen er delt inn i grupper. Hver gruppe telles i kolonnen som hvor mange ganger den vises i kolonnen. I den resulterende tabellen opprettes en ny kolonne med et 'telling'-navn, og verdiene for tellingen skrives her foran hver gruppe.

Din pgAdmin

Nå har vi brukt noen eksempler på dashbordsiden av PostgreSQL. Disse eksemplene er forskjellige på en eller annen måte fordi de danner en subtotalrad fra den opprinnelige kolonnen når ett av elementene er forskjellig fra de andre, så verdien returneres som NULL.

Tenk på det første eksemplet; her har vi laget et kolonnenavn 'ALLE' som har kombinert to kolonner. En adresse og en kategori. 'ALL'-kolonnen teller verdiene i begge kolonnene samlet. Adressekolonnen er gruppert som 'legg til', og kategorikolonnen er separat gruppert som 'katt'. Som kolonnenavn på begge tabellene som brukes kan matches med hverandre. Så hver kolonne i den respektive tabellen får tilgang til et spesifikt objekt.

Betingelsen som brukes på kommandoen avhenger av ID og ordrenummer. Der både disse id- og ordrenumrene er like, hentes dataene. På samme måte legges det til en tilleggsbetingelse for navnet.

>> SELECT o.address, category, count (*) AS “ALL”, GROUPING(o.address) AS “add” , GROUPING (category ) AS “cat” FRA varer I, ordre o hvor i.order_no = o. order_id OG i.address= 'Lahore' GRUPPE ETTER KUBE (o.address, kategori) BESTILL ETTER 1, 2;

For byen Lahore er én kategori valgt. Det er 4 muligheter. Noen ganger er leken til stede, men ikke adressen. Og vice versa. Men det finnes en tid hvor både kategori og adresse er tilstede.

Nå, hvis vi endrer tilstanden til navnet fra en tabell og bytter tabellen med en annen. 'Items.address' erstattes av 'order.address', da blir resultatet annerledes.

Konklusjon

Klausulen 'Postgresql group by' brukes til å bruke enhver aggregert operatør på de kollektive dataene. Denne artikkelen bruker gruppe for klausul med tellefunksjon, sammenføyninger og valg og gruppering av flere kolonner. Jeg er sikker på at denne opplæringen vil være den beste måten å forstå leserne på.