Ikkunafunktiot
Ikkunafunktiot ovat SQL-funktioiden luokka, jotka suorittavat laskelmia joukolle rivejä, jotka liittyvät nykyiseen riviin määritellyssä ikkunassa tai osiossa.
Niitä käytetään laskentaan ja analyysiin tietylle rivijoukolle vähentämättä tulosjoukon kokoa, toisin kuin aggregaattifunktiot, jotka yleensä pienentävät kyselyn palauttamien rivien määrää.
Selitys
Oletetaan, että meillä on seuraava Sales-taulu:
12SELECT * FROM sales
Jos tavoitteena on laskea kokonaistulot jokaiselle tietylle tuotteelle ja näyttää se lisäsarakkeena päätaulussa sen sijaan, että luotaisiin uusi ryhmitelty taulu, lopputulos voisi näyttää seuraavalta:
Mutta miten tämä voidaan toteuttaa?
GROUP BY-lauseen käyttö ei sovellu tähän tehtävään, koska tämä lause vähentää rivien määrää ryhmittelemällä ne määriteltyjen ehtojen mukaan, jolloin palautetaan vain tunnisteet ja niiden vastaavat summa-arvot.
Tämän vuoksi ikkunafunktiot ovat olennaisia tämän ongelman ratkaisemiseksi.
Toteutus
Tarvittava tulos voidaan saada seuraavalla kyselyllä:
1234567SELECT sales_id, product_id, sales_date, amount, SUM(amount) OVER (PARTITION BY product_id) AS Total_Revenue_Per_Product FROM Sales;
Yleinen syntaksi ikkunafunktion luomiselle voidaan kuvata seuraavasti:
SELECT
aggregation_func() OVER (
PARTITION BY partition_column
ORDER BY order_column
)
FROM
table_name;
- SELECT: osoittaa, että kysely alkaa;
- aggregation_func(): aggregaattifunktio (esim.
SUM,AVG,COUNT), joka suorittaa laskennan ikkunan määrittämälle rivijoukolle; - OVER: avainsana, joka esittelee ikkunafunktion;
- PARTITION BY: jakaa tulosjoukon osioihin määritettyjen sarakkeiden arvojen perusteella. Ikkunafunktio toimii erikseen jokaisessa osiossa;
- partition_column: sarake, jota käytetään tulosjoukon osiointiin.
- ORDER BY: määrittää rivien järjestyksen kussakin osiossa;
- order_column: sarake, jota käytetään rivien järjestämiseen kussakin osiossa.
- FROM: osoittaa lähdetaulun, josta data haetaan;
- table_name: taulun nimi, josta data valitaan.
Kiitos palautteestasi!
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme
Can you explain how the PARTITION BY clause works in window functions?
What other types of window functions are commonly used in SQL?
Can you show an example using ORDER BY within a window function?
Awesome!
Completion rate improved to 4.55
Ikkunafunktiot
Pyyhkäise näyttääksesi valikon
Ikkunafunktiot ovat SQL-funktioiden luokka, jotka suorittavat laskelmia joukolle rivejä, jotka liittyvät nykyiseen riviin määritellyssä ikkunassa tai osiossa.
Niitä käytetään laskentaan ja analyysiin tietylle rivijoukolle vähentämättä tulosjoukon kokoa, toisin kuin aggregaattifunktiot, jotka yleensä pienentävät kyselyn palauttamien rivien määrää.
Selitys
Oletetaan, että meillä on seuraava Sales-taulu:
12SELECT * FROM sales
Jos tavoitteena on laskea kokonaistulot jokaiselle tietylle tuotteelle ja näyttää se lisäsarakkeena päätaulussa sen sijaan, että luotaisiin uusi ryhmitelty taulu, lopputulos voisi näyttää seuraavalta:
Mutta miten tämä voidaan toteuttaa?
GROUP BY-lauseen käyttö ei sovellu tähän tehtävään, koska tämä lause vähentää rivien määrää ryhmittelemällä ne määriteltyjen ehtojen mukaan, jolloin palautetaan vain tunnisteet ja niiden vastaavat summa-arvot.
Tämän vuoksi ikkunafunktiot ovat olennaisia tämän ongelman ratkaisemiseksi.
Toteutus
Tarvittava tulos voidaan saada seuraavalla kyselyllä:
1234567SELECT sales_id, product_id, sales_date, amount, SUM(amount) OVER (PARTITION BY product_id) AS Total_Revenue_Per_Product FROM Sales;
Yleinen syntaksi ikkunafunktion luomiselle voidaan kuvata seuraavasti:
SELECT
aggregation_func() OVER (
PARTITION BY partition_column
ORDER BY order_column
)
FROM
table_name;
- SELECT: osoittaa, että kysely alkaa;
- aggregation_func(): aggregaattifunktio (esim.
SUM,AVG,COUNT), joka suorittaa laskennan ikkunan määrittämälle rivijoukolle; - OVER: avainsana, joka esittelee ikkunafunktion;
- PARTITION BY: jakaa tulosjoukon osioihin määritettyjen sarakkeiden arvojen perusteella. Ikkunafunktio toimii erikseen jokaisessa osiossa;
- partition_column: sarake, jota käytetään tulosjoukon osiointiin.
- ORDER BY: määrittää rivien järjestyksen kussakin osiossa;
- order_column: sarake, jota käytetään rivien järjestämiseen kussakin osiossa.
- FROM: osoittaa lähdetaulun, josta data haetaan;
- table_name: taulun nimi, josta data valitaan.
Kiitos palautteestasi!