Oracle Lag -funksjon

Oracle Lag -funksjon

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])
Over (
[query_partition_clause]
ordre_by_claus
)

Funksjonen godtar følgende parametere:

  1. Expr - Dette definerer uttrykket som blir evaluert mot den spesifiserte radverdien ved forskyvningsparameteren.
  2. Offset - Den setter antall rader du ønsker å gå bakover fra den nåværende raden. Som standard henter funksjonen raden som ligger bak din nåværende.
  3. Misligholde - Det gjør at funksjonen kan returnere en standardverdi når den går utover omfanget av den spesifiserte forskyvningen i stedet for en nullverdi.
  4. Query_partition_clause - Den spesifiserer partisjonen etter klausul for å organisere radene i forskjellige grupper.
  5. Ordre_by_claus - Det setter bestillingen for radene.

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)
fra ansatte EMP;

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 tidligere
fra ansatte EMP;

Produksjon:

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 tidligere
fra ansatte EMP;

I 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 tidligere
fra ansatte EMP;

Resultat:

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.