PostgreSql Ntile Window Function

PostgreSql Ntile Window Function
Vindusmetoder i PostgreSQL er blitt kastet av for å likestille Diverge -data og er viktige for analytiske og andre tilfeller av PostgreSQL. Ntile () -metoden etterfulgt av Over -leddet i PostgreSQL blir kastet for å dele organiserte rader i noe som serier med graderte bøtter. Bøtter er ikke noe mer enn et sett med rangerte grupper. Gjennom denne artikkelen vil du oppdage hvordan du deler sorterte rader i en partisjon i en gitt figur av rangerte bøtter ved å bruke PostgreSql ntile () -funksjonen. Ntile () -metoden tildeler et bøtte nummer til hver gruppe som begynner på 1 i et sett, og demonstrerer settet som raden har sin plass.

Syntaks:

>> ntile (bøtter) over ([partisjon etter partisjonsuttrykk,…] [ordet av sort uttrykk]) [ASC | Desc],…]);

Først av alt, for å forstå Ntile -metoden, logger du inn på PostgreSQL -skallet. Derfor prøv å lansere PostgreSQL-kommandolinjeskallet fra applikasjonene. For å jobbe på en annen server, skriv inn navnet på en server; Ellers, treff Enter. Hvis du trenger å øve på den tidligere utpekte databasen, e.g., Postgres, trykk deretter Enter eller annet, stiger inn en databank -tittel, e.g. 'test'. For å bruke en annen port enn 5432, kan du skille den ut; Hvis ikke, la det være som den er, og slå enter for å fortsette. Det kan be deg om å oppgi brukernavnet i tilfelle du trenger å skifte til et nytt brukernavn. Skriv inn brukernavnet; ellers, bare trykk Enter. Til slutt må du legge det nåværende brukerpassordet, for å bytte ved hjelp av kommandolinjen ved å bruke den spesifikke brukeren som under. Deretter kan effektive oppføringer av alle obligatoriske data, begynne å jobbe med Ntile.

For å begynne å jobbe med Ntile, må du opprette en ny tabell ved hjelp av Create -kommandoen hvis du ikke har en. Tenk gjennom den nedenfor-visede tabellen "Ansatt" i PostgreSQL-databasen som er kalt "Test". Denne tabellen inneholder fire kolonner e.g., ID, navn, alder og lønn til en ansatt i et bestemt selskap. Hver kolonne har totalt 10 rader, som betyr 10 poster i hvert kolonnefelt.

>> Velg * fra ansatt;

I starten må vi forstå det enkle konseptet med å hente poster fra en tabell ved å bruke ordren etter klausul. Vi har utført kommandoen nedenfor uten å bruke Ntile for å utdype og forstå konseptet kort. Vi henter poster for kolonner; Navn, alder og lønn mens du sorterer postene i stigende rekkefølge på feltet "alder". Du kan se at den bare vil vise postene som presentert i bildet.

>> Velg navn, alder, lønn fra ansattes ordre etter alder;

Bruk av ntile () over med orden etter klausul:

Forutsatt at den samme tabellen "ansatt", la oss begynne å bruke ntile () over klausul i vårt eksempel. I dette eksemplet har vi valgt de to kolonnene; Navn og lønn, mens du sorterer resultatet relatert til den stigende rekkefølgen på en kolonne “Lønn”. Utfallet vil inneholde data der en ansattes alder er større enn 24 år. Vi har definert verdien av Ntile -bøtta som “3” fordi vi ønsker å dele rader i 3 bøtter, e.g., 1 til 3. Du kan se at radene har blitt delt inn i 3 like bøtter, som inneholder 3 rader i hver bøtte.

>> Velg navn, lønn, ntile (3) over (bestilling etter lønn) fra arbeidstaker der alder> '24';

La oss nå ta et annet eksempel mens vi bruker den samme tabellen "ansatt". Denne gangen ønsker vi å hente postene til tre kolonner; Navn, alder og lønn ved hjelp av SELECT -spørringen i kommandoskallet. Det er små endringer i hvor leddet. For øyeblikket har vi lett etter postene til tabellen "ansatt" der alderen er mindre enn 27 år, noe som bare vil få postene som har alder mindre enn 27. På den annen side er det ingen endring i en bøtteverdi, ettersom den igjen er 3. Prøver den uttalte kommandoen, har vi bare funnet tre poster, like delt inn i 3 bøtter som vist på bildet.

>> Velg navn, alder, lønn, ntile (3) over (bestilling etter lønn) fra ansatt hvor alder < '27';

Bruk av ntile () over med orden etter og partisjon av klausul:

La oss ha et eksempel på ntile () over mens vi bruker partisjon etter og bestilling av klausuler samtidig. Anta at den uendrede tabellen "ansatt" fra en database "test" vil bli brukt. I dette eksemplet må du velge de tre kolonnene; Navn, alder og lønn, mens du sorterer på den stigende måten for et felt "alder". Dessuten har vi brukt partisjonen etter klausulen om kolonnen "lønn", for å lage partisjoner av en tabell i henhold til denne kolonnen. Det er ingen spesifikk tilstand som er brukt i denne spesielle spørringen som betyr at alle poster over tabellen "ansatt" vises. Ntile -bøtta har en verdi på “3”. Ved utførelsen av den under-uttalte spørringen, vil du se resultatet nedenfor. Partisjonene gjøres i henhold til de distinkte verdiene til kolonnen "Lønn". Alle verdiene på kolonnen "lønn" er forskjellige, det er grunnen til at den ligger i forskjellige partisjoner bortsett fra verdien "60000". Dette betyr at hver partisjon har en verdi bortsett fra en. Etter det ble alle partisjonsradene rangert gjennom bøtter. Bare en bøtte fikk 2. rangering.

>> Velg navn, alder, lønn, ntile (3) over (partisjon etter lønn, ordre etter alder) fra ansatt;

Tar det samme eksemplet på Ntile () over med bruk av partisjon etter og bestilling av klausul med en WHERE -klausul. I WHERE -leddet har vi definert tilstanden, som sier at de eneste postene som vil bli hentet er der den ansattes alder er mindre enn 27 år. Vi fikk bare 3 resultater med 2 partisjoner i henhold til alder og "Ntile" -kolonne med rekker.

>> Velg navn, alder, lønn, ntile (3) over (partisjon etter lønn, ordre etter alder) fra ansatt hvor alder < '27';

Konklusjon:

I denne guiden har vi diskutert forskjellige eksempler på Ntilile -funksjoner. Du kan implementere dem i henhold til din nødvendighet.