PostgreSQL medianfunksjon

PostgreSQL medianfunksjon
Den beregningsmedianen forplikter seg til å få mellomverdien fra dataene. Som mange andre funksjoner gir PostgreSQL et bredt spekter av allsidighet i å håndtere medianfunksjonen. Det er opptatt av å finne medianverdien fra kolonnen i tabellen som median brukes. I motsetning til PostgreSQL Aggregate Functions Count, Sum, er det ikke en spesifikk funksjon som brukes til å beregne medianens aggregat. Median er en brukerdefinert funksjon.

I enkle aritmetiske funksjoner er det forskjellige midler og formler for å finne medianen i alle oppgitte data enten i vanlig tekst eller i tabellform. Mens vi i tilfelle av databasesystemer bruker vi noen andre innebygde funksjoner kombinert for å få verdien av medianen. Denne artikkelen vil utdype noen av de mest effektive teknikkene og også en manuell funksjon opprettet av oss for å hente medianen fra dataene i PostgreSQL.

Bruk av Perscentile_Count () og Percentile_Disc ()

Disse begge er måtene å bli median på en litt annen måte. Fordi forskjellen i deres resulterende verdier er basert på metodologiene deres. Prosentil refererer til å skildre dataverdien med å ha en prosentandel per hundre. Men for medianen bruker vi (0.5) Verdi. Hovedforskjellen mellom dem begge er at Percentile_Count () interpolater verdien og dens arbeid er basert på kontinuerlig fordeling av verdier, mens Perscentile_Disc () returnerer verdien fra de gitte dataene og er avhengig av å beregne persentilen på den diskrete distribusjonen.

Syntaksen for begge disse persentilene er:

Velg Perscentile_Count (0.5) innen gruppe (rekkefølge etter x) fra verdier (a), (b), (c), (d)) v (x);
Velg Perscentile_Disc (0.5) innen gruppe (rekkefølge etter x) fra verdier (a), (b), (c), (d)) v (x);

For de gitte verdiene vil persentil_disc returnere de eneste verdiene som er til stede i dataene. Percentile_Count beregner medianen for verdiene. For eksempel mellom de jevne tallene. I eksemplet ovenfor vil Perscentile_Count gi "5" antall mellom 3 og 7 -verdiene. Og persentil_disc viser 7 fra å gå ned. Ettersom verdien for denne funksjonen alltid er fra tilgjengelige data. Så det gir den nærmeste verdien fra medianen etter beregninger.

Ettersom dataene i PostgreSQL er til stede i forholdet (tabellen), brukes persentilen på kolonnen med en numerisk verdi (lønn). Vi opprettet et bord som heter Professor. Følgende spørring vil hjelpe oss med å illustrere tabellattributtene først og deretter bruke persentil_disc () på den.

>> Velg * fra professor; Velg Perscentile_Disc (0.5) Innen gruppe (orden etter yrke.betale) fra professor;

Den første halvdelen av spørringen vil vise innholdet i tabellen. mens den andre delen vil velge persentilverdien. En ordre etter klausul brukes her. Denne leddet vil ordne elementene i den aktuelle kolonnen i stigende rekkefølge, og deretter bruke funksjonen på den. Kolonnen (lønn) er i bruk for at denne spørringen skal utføres.

Etter utførelse er resultatet 51, en tydelig verdi som oppnås ved persentilfunksjonen. For å gjøre det mer tydelig, brukes en enkel "ntile" med 100 til å ordne hvert element i kolonnen i stigende rekkefølge.

>> Velg professor. betale, ntile (100) over (ordre av professor. betale) fra professor;

Ovennevnte kommando formidler "lønn" -kolonnen fra tabellen. Det har gjort det lettere å forstå hvordan Perscentile_Disc vil fungere. Ettersom det totale antallet i "lønn" -kolonnen er 8 rader som er jevn. Så det er vanskelig å få det nøyaktige midtpunktet i dataene. Disc () vil gå for nærmeste verdi. Det er “51” i henhold til stigende rekkefølge.

Når det. Ettersom navnet indikerer å jobbe med persentil_cont, er verdien i form av kontinuitet, som betyr ingen ende så langt. Derfor vil resultatet alltid være i desimalform. Dette vil gi midten av to tilstøtende tall. Med andre ord, denne funksjonen henter de to tallene som er til stede i midten av kolonnen, i tilfelle av jevn tall.

>> velg Percentile_Count (0.5) Innenfor gruppe (orden av proffssor.betale) fra professor;

Mellom 51 og 52 er det “51.5 ”er den nøyaktige kontinuerlige verdien av medianen i kolonnen“ lønn ”.

Du kan også endre persentilverdien i hvilken som helst funksjon. For eksempel bruker vi 0.25, 0.5, og 0.75 som parameter i Percentile_Disc ().

Percentile_disc (0.25)
Percentile_disc (0.5)
Percentile_dic (0.75)

Alle verdiene vises samlet i en enkelt rad ved hjelp av denne syntaksen i funksjonen. Tenk på snapen vi har festet, som viser ntilen til kolonnen, alle verdiene er sortert i stigende rekkefølge. Hvis 0.5 fører til verdien “51”, deretter for 0.25, det er 8 og for “0.75 ”det er 77. Som det er tallet som er til stede på id 4, så for 0.25, beregnes den i henhold til henholdsvis fjerde ID. Og lignende er tilfelle med 0.75.

Bruk av funksjon for median

For å håndheve funksjonen for beregning av medianen av tabellen, må vi ha en ny prøvetabell. Etter opprettelse vil verdiene bli lagt til for å gjøre det i funksjonell tilstand. Den midlertidige tabellen brukes fordi vi ikke trenger disse dataene på lengre tid til å eksistere i databasen.

>> Lag midlertidig tabellmedian (ID Serisl, klasse varchar (50), navn varchar (50), grad desimal (5,1)); >> sett inn i median (klasse, navn, karakter) verdier ('x', 'y', z);

Etter innsetting av verdi, vil vi ta et glimt av dataene som er satt inn. For dette formålet, bruk SELECT -setningen.

>> Velg * fra median,

I denne funksjonen vil median for hver klasse bli beregnet separat. Denne partisjoneringen er i henhold til klassekolonnen. Dataene er sortert i både ASC- og DESC -ordrer. En ny funksjon initialiseres her radnummer (). Dette vil hente radnummeret og deretter bruke operasjoner i henhold til det. La oss se på koden. Så vil vi bryte det ned for å se hva som skjer her for å få medianen.

Velg kommando brukes som introduserer subQuery. Denne subquery bruker det radnummeret () som vil ordne radene i stigende og synkende rekkefølge. For hver klasse brukes bestillinger for radnumre.

Hver gang du er på jakt etter medianen i listen over å ha verdiene i jevn tall, ligger svaret alltid i å ta gjennomsnittet av de to mellomtallene som persentil_cont gjør. Dette skjer i denne kommandoen for å få medianen.

Rowasc in (Rowdesc, Rowdesc - 1, Rowdesc + 1)

Resultatet blir sendt tilbake fra subquery til hovedspørsmålet. Og da beregnes et gjennomsnitt. For matematikken får vi 72.0, forventet midt i tilfelle av en merkelig liste over verdier. Mens for vitenskap er det 76.5. Det har et jevnt antall i naturfag, så vi får midt i 72 og 81.

Konklusjon

PostgreSQL medianfunksjon gjør det lettere å finne midtpunktet i vanlige eller tabellformede data enn å beregne dem manuelt. Selv om det er en brukeropprettet funksjon, bruker den noen innebygde funksjoner for å hente den aktuelle posten. Perscentile_cont og Perscentile_Disc anses å være kjernen i emnet som diskuteres. Som deres stille støtte i å gi median konsept i funksjonen er bemerkelsesverdig. Imidlertid er alle disse funksjonene nok til å finne medianen.