Vinduesfunktioner
Window-funktioner er en kategori af SQL-funktioner, der udfører beregninger på tværs af et sæt rækker relateret til den aktuelle række inden for et defineret vindue eller partition.
De bruges til at udføre beregninger og analyser over et delmængde af rækker uden at reducere resultatmængden, i modsætning til aggregeringsfunktioner, der typisk reducerer antallet af rækker returneret af en forespørgsel.
Forklaring
Antag, at vi har følgende Sales
-tabel:
Hvis vores mål er at beregne den samlede omsætning for hvert specifikt produkt og vise det i en ekstra kolonne i hovedtabellen i stedet for at generere en ny grupperet tabel, kan resultatet se således ud:
Men hvordan kan vi gøre det?
At bruge GROUP BY
er ikke egnet til denne opgave, fordi denne klausul reducerer antallet af rækker ved at gruppere dem efter specificerede kriterier, hvilket resulterer i, at kun ID'er og deres tilsvarende sumværdier returneres.
Derfor er vinduesfunktioner essentielle for at løse dette problem.
Implementering
Vi kan opnå det ønskede resultat ved at bruge følgende forespørgsel:
1234567SELECT sales_id, product_id, sales_date, amount, SUM(amount) OVER (PARTITION BY product_id) AS Total_Revenue_Per_Product FROM Sales;
En generel syntaks for at oprette en vinduesfunktion kan beskrives som følger:
SELECT
aggregation_func() OVER (
PARTITION BY partition_column
ORDER BY order_column
)
FROM
table_name;
- SELECT: Angiver, at en forespørgsel skal påbegyndes;
- aggregation_func(): Den aggregeringsfunktion (f.eks.
SUM
,AVG
,COUNT
), der udfører en beregning over et sæt rækker defineret af vinduet; - OVER: Nøgleord, der introducerer vinduesfunktionen;
- PARTITION BY: Opdeler resultatmængden i partitioner baseret på værdierne i de angivne kolonner. Vinduesfunktionen opererer separat på hver partition;
- partition_column: Kolonnen, der bruges til at opdele resultatmængden.
- ORDER BY: Angiver rækkefølgen af rækkerne inden for hver partition;
- order_column: Kolonnen, der bruges til at sortere rækkerne inden for hver partition.
- FROM: Angiver den kildetabel, hvorfra dataene hentes;
- table_name: Navnet på tabellen, hvorfra dataene vælges.
Tak for dine kommentarer!
Spørg AI
Spørg AI
Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat
Awesome!
Completion rate improved to 4.35
Vinduesfunktioner
Stryg for at vise menuen
Window-funktioner er en kategori af SQL-funktioner, der udfører beregninger på tværs af et sæt rækker relateret til den aktuelle række inden for et defineret vindue eller partition.
De bruges til at udføre beregninger og analyser over et delmængde af rækker uden at reducere resultatmængden, i modsætning til aggregeringsfunktioner, der typisk reducerer antallet af rækker returneret af en forespørgsel.
Forklaring
Antag, at vi har følgende Sales
-tabel:
Hvis vores mål er at beregne den samlede omsætning for hvert specifikt produkt og vise det i en ekstra kolonne i hovedtabellen i stedet for at generere en ny grupperet tabel, kan resultatet se således ud:
Men hvordan kan vi gøre det?
At bruge GROUP BY
er ikke egnet til denne opgave, fordi denne klausul reducerer antallet af rækker ved at gruppere dem efter specificerede kriterier, hvilket resulterer i, at kun ID'er og deres tilsvarende sumværdier returneres.
Derfor er vinduesfunktioner essentielle for at løse dette problem.
Implementering
Vi kan opnå det ønskede resultat ved at bruge følgende forespørgsel:
1234567SELECT sales_id, product_id, sales_date, amount, SUM(amount) OVER (PARTITION BY product_id) AS Total_Revenue_Per_Product FROM Sales;
En generel syntaks for at oprette en vinduesfunktion kan beskrives som følger:
SELECT
aggregation_func() OVER (
PARTITION BY partition_column
ORDER BY order_column
)
FROM
table_name;
- SELECT: Angiver, at en forespørgsel skal påbegyndes;
- aggregation_func(): Den aggregeringsfunktion (f.eks.
SUM
,AVG
,COUNT
), der udfører en beregning over et sæt rækker defineret af vinduet; - OVER: Nøgleord, der introducerer vinduesfunktionen;
- PARTITION BY: Opdeler resultatmængden i partitioner baseret på værdierne i de angivne kolonner. Vinduesfunktionen opererer separat på hver partition;
- partition_column: Kolonnen, der bruges til at opdele resultatmængden.
- ORDER BY: Angiver rækkefølgen af rækkerne inden for hver partition;
- order_column: Kolonnen, der bruges til at sortere rækkerne inden for hver partition.
- FROM: Angiver den kildetabel, hvorfra dataene hentes;
- table_name: Navnet på tabellen, hvorfra dataene vælges.
Tak for dine kommentarer!