SQL LAG -funksjon

SQL LAG -funksjon

Lag -funksjonen i SQL lar deg hente forrige rad ved en spesifikk forskyvning fra den nåværende raden. Dette betyr at du kan få tilgang til forrige rad fra den nåværende raden. Du kan også spesifisere en bestemt forskyvning for å få tilgang til den andre, tredje og så på forrige rad.

La oss diskutere hvordan vi kan bruke etterslepfunksjonen i SQL.

Funksjonssyntaks

Funksjonssyntaksen er som vist:

Lag (scalar_expression [, offset] [, standard])
Over ([partition_by] order_by);

Funksjonsparametrene uttrykkes som vist nedenfor:

  1. Scalar_expression - refererer til returverdien basert på en spesifisert forskyvning fra gjeldende rad.
  2. Offset - Definerer antall tidligere elementer fra den nåværende raden for å få tilgang til verdiene. Som standard vil SQL bruke en forskyvningsverdi på 1.
  3. Misligholde - Angir standardverdien hvis forskyvningsverdien er utenfor partisjonens omfang. Standardverdien er null.
  4. Partisjon av - partisjoner dataene i en eller flere partisjoner avhengig av den spesifiserte tilstanden.
  5. Rekkefølge etter - uttrykk for å bestille dataene i hver partisjon.

Eksempel 1

Anta at vi har en tabell som inneholder ansattes data som vist:

For å få gjeldende og tidligere ansattnavn, kan vi kjøre spørringen som vist:

Velg full_navn, lag (full_name)
Over (partisjon etter kategori bestilling etter id) som prev_emp
Fra ansatte;

Koden over skal returnere gjeldende og tidligere ansattes navn i hver partisjon.

Utgangen er som vist:

Eksempel 2

Hvis det ikke er noen tidligere rad i partisjonen, vil funksjonen returnere null. Hvis vi ønsker å angi en verdi for de ikke-eksisterende radene, kan vi angi standardparameteren som vist:

Velg full_navn, lag (full_name, 1, 'Missing Person')
Over (partisjon etter kategori bestilling etter id) som prev_emp
Fra ansatte;

Dette skal erstatte nullverdiene med 'manglende person.'Utgangen vises nedenfor:

Eksempel 3

Anta at vi vil få tilgang til to rader tilbake fra den nåværende raden? Vi kan gjøre det ved å spesifisere forskyvningen som vist:

Velg full_name, lag (full_name, 2, 'n/a')
Over (partisjon etter kategori bestilling etter id) som prev_emp
Fra ansatte;

Spørringen over skal gå tilbake til to rader og velge verdien.

Produksjon:

Konklusjon

I denne artikkelen lærte du hvordan du bruker SQL LAG () -funksjonen for å få tilgang til forrige rad fra den nåværende raden.

Takk for at du leste!!