Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele Haaste: Ikkunafunktion Käyttö | Joitakin Lisäaiheita
Edistyneet SQL-Tekniikat

bookHaaste: Ikkunafunktion Käyttö

Tarkastellaan bank_accounts-taulua, jota olemme käyttäneet aiemmissa osioissa:

Oletetaan, että haluamme lisätä tauluun tiedon mihin luokkaan kukin käyttäjä kuuluu tilinsaldon perusteella.

Luokat määritellään seuraavasti:

  • Henkilö, jonka tilin saldo on alimmassa 25%:ssa, kuuluu neljänteen luokkaan;
  • Henkilö, jonka tilin saldo on välillä 25% ja 50%, kuuluu kolmanteen luokkaan;
  • Henkilö, jonka tilin saldo on välillä 50% ja 75%, kuuluu toiseen luokkaan;
  • Henkilö, jonka tilin saldo on ylimmässä 25%:ssa, kuuluu ensimmäiseen luokkaan.

Tämän ongelman ratkaisemiseksi voimme käyttää ikkunafunktiota nimeltä NTILE().
NTILE()-funktio on ikkunafunktio, joka jakaa järjestetyn osion rivit määriteltyyn määrään suunnilleen yhtä suuria ryhmiä eli "tilejä".
Se antaa jokaiselle riville ryhmänumeron alkaen 1:stä sen mukaan, mihin ryhmään rivi kuuluu.

NTILE(num_buckets) OVER (
    ORDER BY sort_column
)

Huomio

Tässä esimerkissä meidän ei tarvitse määritellä PARTITION BY -lausetta, koska haluamme käyttää NTILE()-funktiota koko tulosjoukkoon, emme tiettyihin osajoukkoihin tai osioihin.
ORDER BY -lause riittää, koska se määrittää järjestyksen, jossa rivit jaetaan tileihin, varmistaen, että ryhmittely perustuu koko taulun palkkojen järjestykseen.
Jos haluaisimme laskea tilejä tietyissä ryhmissä (esim. osastoittain), käyttäisimme PARTITION BY -lausetta.

Tehtävä

Swipe to start coding

Tehtävänäsi on käyttää NTILE()-funktiota saadaksesi tietoa kunkin tilinhaltijan luokasta.

Sinun tulee:

  1. Määrittää luokkien määrä funktion argumenttina.
  2. Määrittää järjestys tilin saldon perusteella luokan määrittämiseksi.
  3. Koska oletamme, että ensimmäinen luokka on korkein saldo ja niin edelleen, saldot tulee järjestää laskevaan järjestykseen.

Ratkaisu

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 3. Luku 5
single

single

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme

Suggested prompts:

How do I write a query to assign classes using NTILE() for this table?

Can you explain how NTILE() works with an example using these balances?

What would the result look like after adding the class column?

close

Awesome!

Completion rate improved to 4.35

bookHaaste: Ikkunafunktion Käyttö

Pyyhkäise näyttääksesi valikon

Tarkastellaan bank_accounts-taulua, jota olemme käyttäneet aiemmissa osioissa:

Oletetaan, että haluamme lisätä tauluun tiedon mihin luokkaan kukin käyttäjä kuuluu tilinsaldon perusteella.

Luokat määritellään seuraavasti:

  • Henkilö, jonka tilin saldo on alimmassa 25%:ssa, kuuluu neljänteen luokkaan;
  • Henkilö, jonka tilin saldo on välillä 25% ja 50%, kuuluu kolmanteen luokkaan;
  • Henkilö, jonka tilin saldo on välillä 50% ja 75%, kuuluu toiseen luokkaan;
  • Henkilö, jonka tilin saldo on ylimmässä 25%:ssa, kuuluu ensimmäiseen luokkaan.

Tämän ongelman ratkaisemiseksi voimme käyttää ikkunafunktiota nimeltä NTILE().
NTILE()-funktio on ikkunafunktio, joka jakaa järjestetyn osion rivit määriteltyyn määrään suunnilleen yhtä suuria ryhmiä eli "tilejä".
Se antaa jokaiselle riville ryhmänumeron alkaen 1:stä sen mukaan, mihin ryhmään rivi kuuluu.

NTILE(num_buckets) OVER (
    ORDER BY sort_column
)

Huomio

Tässä esimerkissä meidän ei tarvitse määritellä PARTITION BY -lausetta, koska haluamme käyttää NTILE()-funktiota koko tulosjoukkoon, emme tiettyihin osajoukkoihin tai osioihin.
ORDER BY -lause riittää, koska se määrittää järjestyksen, jossa rivit jaetaan tileihin, varmistaen, että ryhmittely perustuu koko taulun palkkojen järjestykseen.
Jos haluaisimme laskea tilejä tietyissä ryhmissä (esim. osastoittain), käyttäisimme PARTITION BY -lausetta.

Tehtävä

Swipe to start coding

Tehtävänäsi on käyttää NTILE()-funktiota saadaksesi tietoa kunkin tilinhaltijan luokasta.

Sinun tulee:

  1. Määrittää luokkien määrä funktion argumenttina.
  2. Määrittää järjestys tilin saldon perusteella luokan määrittämiseksi.
  3. Koska oletamme, että ensimmäinen luokka on korkein saldo ja niin edelleen, saldot tulee järjestää laskevaan järjestykseen.

Ratkaisu

Switch to desktopVaihda työpöytään todellista harjoitusta vartenJatka siitä, missä olet käyttämällä jotakin alla olevista vaihtoehdoista
Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

close

Awesome!

Completion rate improved to 4.35
Osio 3. Luku 5
single

single

some-alt