I Oracle refererer en analytisk funksjon til funksjoner som brukes til å beregne et sett med rader. Analytiske funksjoner brukes hovedsakelig til å bestemme de forskjellige beregningene som persentiler, standardavvik osv.
I denne opplæringen lærer vi hvordan du bruker en av Oracle Lag -funksjonene for å få tilgang til en rad ved en spesifikk forskyvning fra gjeldende rad.
Oracle Lag () -funksjon
Lag () -funksjonen brukes til å hente verdien av en rad i en tabell fra den nåværende raden. For eksempel kan du bruke den til å få verdien fra fem rader fra din nåværende posisjon. Du kan bruke den til å utføre beregningene eller sammenligningene mellom verdier over tid.
Følgende viser den grunnleggende syntaks for funksjonen:
Lag (expr [, offset] [, standard])Funksjonen godtar følgende parametere:
Oracle Lag () Funksjonseksempel
Dette eksemplet viser hvordan du bruker etterslep () -funksjonen.
Velg First_Name, Last_name, Lønn, JOB_ID, LAG (lønn) over (bestilling etter lønn ASC)Resultat:
Som du ser inneholder etterslepskolonnen lønnen til raden bak den. Hvis det ikke er noen rad bak den som den første kolonnen, returnerer funksjonen null.
Vi kan unngå dette ved å angi standardparameteren.
Velg First_name, Last_name, lønn, lag (lønn, 1, 0) over (bestilling etter lønn ASC) som tidligereProduksjon:
Vi kan også spesifisere forskyvningsverdien som vist i følgende:
Velg First_name, Last_name, lønn, lag (lønn, 5, 0) over (bestilling etter lønn ASC) som tidligereI dette tilfellet skal spørringen hente fem kolonner bak det som følger:
For å bruke etterslepfunksjonen med en partisjon etter klausul, kan vi kjøre følgende kommando:
Velg First_name, Last_name, JOB_ID Lønn, lag (lønn, 1, 0) over (partisjon etter jobb_id bestilling etter lønn ASC) som tidligereResultat:
Konklusjon
I dette innlegget diskuterte vi hvordan du bruker Oracle Lag () -funksjonen for å hente de tidligere radene fra den nåværende posisjonen ved en gitt forskyvning.