I denne opplæringen skal vi fokusere på å bruke en av MySQL -funksjonene: etterslep (). Det er en vindusfunksjon som lar deg få tilgang til og hente verdien av tidligere rader fra den nåværende raden innenfor samme resultatsett.
Grunnleggende syntaks
Den generelle syntaksen for bruk av MySQL LAG () -funksjonen er:
Lag (uttrykk, offsetvalue, standardvar) over (La oss ta et øyeblikk å forklare noen av parametrene i LAG () -funksjonssyntaks.
De er som følger:
Uttrykk: Dette er verdien som returneres av funksjonen fra raden som fører den gjeldende raden med den angitte verdien som er spesifisert.
OffsetValue: Denne verdien representerer antall rader som går foran den nåværende raden for å få verdien. Denne verdien må være en 0 eller en verdi høyere enn 0.
MERK: Verdien av 0 representerer den nåværende raden.
DefaultVar: Denne verdien returneres som standardverdien av funksjonen hvis det ikke eksisterer noen foregående rad. Hvis standardverdien er udefinert i funksjonsparameteren og ingen foregående rad eksisterer, returnerer funksjonen en nullverdi.
Partisjon av: Partisjonen etter klausul deler radene i et logisk partisjonssett. Lag -funksjonen blir deretter brukt på de delte partisjonene.
REKKEFØLGE ETTER: Som vanlig spesifiserer denne verdien rekkefølgen på radene i de tilgjengelige partisjonene.
Eksempel Bruk saker
La oss se på eksempel på bruk av tilfeller av etterslep () funksjon for å forstå hvordan det fungerer. Begynn med å opprette en eksempeldatabase kalt Sample_DB;
Drop -databasen hvis eksisterer prøve_database;Nå som vi har en eksempeldatabase å jobbe med, kan vi fortsette og illustrere hvordan vi skal jobbe med MySQL LAG -funksjonen.
Eksempel 1: Lagfunksjon uten standardverdi
Tenk på eksemplet nedenfor som bruker etterslepfunksjonen på påmeldingsdato med en forskyvningsverdi på 1.
Når vi har utført spørringen ovenfor, får vi en ny kolonne forrige_dat som inneholder den forrige verdien av raden som spesifisert med en forskyvningsverdi på 1. Siden det ikke er noen tidligere verdi i første rad, er verdien null.
Merk: Du kan spesifisere standardverdien hvis en rad ikke har en tidligere verdi.
Utgangen er som vist nedenfor:
Eksempel 2: Lag -funksjon med standardverdi
Du kan også spesifisere en standardverdi for en rad der den forrige verdien ikke eksisterer. I vårt eksempel vil vi angi standardverdien på gjeldende dato.
Merk: I dette eksemplet vil vi også angi forskyvningsverdien som 2 i stedet for 1.
Tenk på spørringen nedenfor:
Velg *, Lag (ReagonS_Date, 2, Curdate ()) Over (Bestill av ID ASC) som forrige_date fra Sample_Database.brukere;Når vi har utført spørringen ovenfor, vil vi få verdier med en forskyvningsverdi på to og gjeldende dato som standard for nullverdier.
Utgangen er som vist nedenfor:
Eksempel 3: Lagfunksjon med partisjon av
Vi kan bruke lag () -funksjonen med partisjonen etter klausul. Denne klausulen grupperer først dataene i forskjellige logiske undergrupper og bruker deretter etterslepfunksjonen på partisjonene.
La oss se dataene i brukerens tabell før du fortsetter. Tenk på følgende spørsmål:
Sett inn brukere (id, navn, poengsum, melder_date)Nå som vi har en tabell med 10 verdier, kan vi dele opp dataene etter poengsummen og deretter bruke etterslepfunksjonen.
Ovennevnte operasjon er illustrert i spørringen nedenfor:
Velg *, Lag (ReagonS_Date, 1, Curdate ()) Over (Partition by Score Order by ID ASC) som forrige_dato fra Sample_Database.brukere;I spørringen ovenfor starter vi med å dele opp dataene basert på poengsummen og deretter bruke etterslepfunksjonen med en forskyvningsverdi på 1. Vi setter også standardverdien som gjeldende dato. Utgangsresultatet er som vist nedenfor:
Merk: Du kan også merke at den første raden i hver partisjon inneholder gjeldende dato, noe som betyr at det ikke er noen tidligere verdi i den angitte raden.
Konklusjon
Denne opplæringen har diskutert hvordan lag () -funksjonen fungerer for å få verdier av de tidligere radene i den nåværende raden.
For å oppsummere:
Takk for at du leser.