PostgreSql Group av

PostgreSql Group av
PostgreSQL Group by Clause er en funksjon som brukes til å forene/kombinere disse radene i tabellen som har de samme dataene. Denne klausulen brukes hovedsakelig til å fjerne duplikatdata og for å opprettholde samtidighet. Hver gang vi vil beregne sum, eller noe annet aggregat som AVG, etc., Denne gruppen BY -klausul brukes alltid, da det er mange klausuler brukt i PostgreSQL. Men det eksisterer et hierarki mellom hver klausul.

Fra> hvor> “gruppe av”> å ha> velg> distinkt> rekkefølge med> grense

Arbeidet med PostgreSql ligger innenfor “Where” og “Have” -klausulen.

Syntaks

Velg kolonne
Fra Dumytable
Hvor [forhold]
Gruppe av FirstColumn, SecondColumn ..
Bestill av FirstColumn, SecondColumn…;

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 mennesker. Hvert navn som ligner på en annen danner en gruppe, og betalingen deres legges samlet mot hvert samme navn. Dette er utdypet i eksemplet nedenfor.

>> Velg LName, sum (betaling) fra Passenger Group av LName;

Passasjerens etternavn er valgt med bruk av en innebygd funksjon 'sum' som tar kolonnen 'betaling'. Og legg til betalingen for at de har samme navn. For eksempel blir lønnen til "Javed" og "Saad" lagt til. Mens for “Malik” og “Shams” er det individuelt nevnt.

På samme måte kan du vurdere et tabell "sykehus". Vi ønsker å gruppere byen for alderen. I dette eksemplet eksisterer en by mer enn en gang i en kolonne. Hver by er gruppert med samme bynavn. Aldrene til hver gruppe av byen blir lagt til og danner en enkelt rad.

Sykehus:

>> Velg by, sum (alder) fra sykehusgruppe av by;

Eksempel 2

Alternativt, hvis vi velger etternavnet med IDen fra bordets passasjer, vil resulteren være en annen tabell. For når vi grupperer begge kolonnene sammen, vil den vise hver passasjers navn fordi ID for hver passasjer, til og med å ha et vanlig etternavn, er annerledes. Summen beregnes i en egen kolonne, men hver passasjers betaling er nevnt foran navnet hans fordi gruppering av LName ikke er gjort her.

Dette er et eksempel på gruppen etter klausul med flere kolonner. For 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 Passenger Group med ID, LNAME;

Fra utgangen vil du legge merke til en ting som for det første vises alle de lname som er uvanlige, og deretter blir de som er de samme nevnt i tabellen.

Eksempel 3

Dette eksemplet har en sammenføyningstilstand og en gruppe etter klausul. Som 'Join' brukes, betyr det at vi har brukt to tabeller her. Den ene er "vare", og den andre er "bestillinger".

Elementer:

Bestillinger:

Vi har brukt en sammenkoblingsmetode (brukt til å slå sammen to strenger) for å gå sammen med verdiene til to kolonner i "elementene" -tabellen med "" og navngi kolonnen kollektivt som "beskrivelse". Det er valgfritt; Du kan ta dem hver for seg. I denne spørringen identifiserer nøkkelordet "bruk" den spesifikke kolonnen fra den andre tabellen. Adressen fra varetabellen er matchet med adressekolonnen i "Bestillinger" -tabellen. Dette gjøres ved å lage en sammenføyning mellom to tabeller. Som tidligere eksempler vil begge kolonnene bli valgt av gruppen etter klausul.

>> Velg navn || ',' || Kategori som beskrivelse, adresse fra elementer indre sammenføyningsordrer ved å bruke (adresse) gruppe etter adresse, beskrivelse;

Du kan observere at 5 rader vil bli valgt med adressen til elementer matchet med adressen til bestillinger. Og da vil beskrivelseskolonnen bli dannet korrespondanse med adressekolonnen.

Tilsvarende er det et annet eksempel på sammenkobling med aldersfaktoren i to tabeller. Den ene er "passasjer", og den andre er "arbeider". Concatenation er mellom det første og etternavnet. Begge disse navnene er atskilt gjennom rommet mellom to navn. Vi har tatt en del av arbeiderbordet her.

Arbeider:

Spørringen fungerer slik at poenget der arbeidstakerens fnavn blir matchet med passasjeren, alderen fra passasjeren, vises i alderssøylen.

>> Velg Fname || "|| Passasjer.lname som full_name, passasjer.Alder fra Passenger Inner Join Worker Using (Fname) Group av Full_Name, Passenger.Aldersordre av passasjer.alder;

En rad er dannet. Fullnavnet opprettes ved å slå sammen to kolonner med plass, og adressen er valgt der passasjerens fnavn stemmer overens med arbeiderens fname.

Eksempel 4

Dette eksemplet tar for seg å bruke en count () -funksjon for å telle ID -ene i "elementene" -tabellen. Dette er igjen gruppe av IDen til tabellen.

>> Velg ID, Count (ID) fra Items Group by ID;

Radene i ID -kolonnen er delt inn i grupper. Hver gruppe telles i kolonnen at hvor mange ganger den vises i kolonnen. I den resulterende tabellen opprettes en ny kolonne med et "telling" navn, og verdiene til tellingen er skrevet her foran hver gruppe.

Via pgadmin

Nå har vi brukt noen eksempler på dashbordsiden av PostgreSql. Disse eksemplene er forskjellige i noe slag fordi de danner en subtotisk rad fra den opprinnelige kolonnen når noen av varene skiller seg fra de andre, så verdien returneres som null.

Tenk på det første eksemplet; Her har vi opprettet et kolonnenavn “All” som har kombinert to kolonner. En adresse og en kategori. 'Alle' kolonne teller verdiene i begge kolonnene kollektivt. Adressekolonnen er gruppert som "Legg til", og kategorikolonnen er separat gruppert som "CAT". Som kolonnenavn på begge tabellene som brukes kan matches med hverandre. Så hver kolonne i den respektive tabellen får tilgang til et bestemt objekt.

Tilstanden som brukes på kommandoen avhenger av ID og ordrenummer. Der både disse ID- og ordrenummerene er de samme, hentes dataene. Tilsvarende legges også en ekstra tilstand lagt til for navnet.

>> Velg o.adresse, kategori, count (*) som "alle", gruppering (o.adresse) som "legg til", gruppering (kategori) som "katt" fra elementer i, bestiller o hvor jeg.ordre_no = o.ordre_id og jeg.adresse = 'lahore' gruppe av kuben (o.adresse, kategori) bestilling med 1, 2;

For byen Lahore er en kategori valgt. Det er 4 muligheter. Noen ganger er leketøyet til stede, men ikke adressen. Og vice versa. Men det eksisterer en tid der både kategorien og adressen er til stede.

Nå, hvis vi endrer tilstanden til navnet fra en tabell og bytter tabellen med andre. “Varer.adresse ”erstattes av“ Orderen.adresse ”, da er resultatet annerledes.

Konklusjon

Klausulen “PostgreSql Group by” brukes til å anvende enhver samlet operatør på kollektive data. Denne artikkelen bruker gruppe etter klausul med tellefunksjon, sammenføyning og valg og gruppering av flere kolonner. Jeg er sikker på at denne opplæringen vil være det beste forståelsesmidlet for leserne.