Yhteenveto: Tässä opetusohjelmassa opit käyttämään ROW_NUMBER()
-toimintoa järjestysnumeron määrittämiseen jokaiselle riville kyselyn tulosjoukossa.
SQL ROW_NUMBER () Toimintojen yleiskatsaus
ROW_NUMBER()
on ikkunafunktio, joka antaa peräkkäisen kokonaisluvun kutakin kyselyn tulosjoukon riviä.
Seuraava kuvaa funktion ROW_NUMBER()
syntaksia:
Tässä syntaksissa
- Ensinnäkin lauseke
PARTITION BY
jakaaFROM
-lauseke osioiksi. LausekePARTITION BY
on valinnainen. Jos jätät sen pois, koko tulosjoukko käsitellään yhtenä osiona. - Sitten
ORDER BY
-lauseke lajittelee kunkin osion rivit. KoskaROW_NUMBER()
on järjestysherkkä toiminto, lausekeORDER BY
vaaditaan. - Lopuksi jokaisen rivin jokaisessa osioon on annettu peräkkäinen kokonaisluku, jota kutsutaan rivinumeroksi. Rivin numero nollataan aina, kun osion raja ylitetään.
SQL ROW_NUMBER () esimerkkejä
Käytämme employees
ja departments
taulukot näytetietokannasta esittelyä varten:
A) Yksinkertainen SQL-RIVINUMERO () – esimerkki
Seuraava lause löytää kaikkien työntekijöiden etunimen, sukunimen ja palkan. Lisäksi se käyttää ROW_NUMBER()
-toimintoa lisätäksesi peräkkäisen kokonaisluvun kullekin riville.
Seuraava kuva näyttää osittaisen tulosjoukon:
B ) SQL ROW_NUMBER () -sivun käyttäminen
ROW_NUMBER()
-toimintoa voidaan käyttää sivutukseen. Esimerkiksi, jos haluat näyttää kaikki sovelluksen taulukon työntekijät sivuittain, joista jokaisella sivulla on kymmenen tietuetta.
- Käytä ensin
ROW_NUMBER()
function määrittää kullekin riville peräkkäisen kokonaisluvun. - Suodata sitten rivit pyydetyn sivun mukaan. Esimerkiksi ensimmäisen sivun rivit alkavat yhdestä yhdeksään ja toisella sivulla rivit alkavat 11: stä 20: een ja niin edelleen.
Seuraava lause palauttaa toisella sivulla, jokaisella sivulla on kymmenen tietuetta.
Seuraava näyttää tuloksen:
Jos haluat käyttää yhteistä taululauseketta (CTE) alakyselyn sijaan, tässä on kysely:
C) SQL ROW_NUMBER () n: nneksi korkeimman arvon löytämiseksi ryhmää kohti
Seuraava esimerkki näyttää kuinka löytää työntekijät, joiden osastoilla on korkein palkka:
Alakyselyssä:
- Ensinnäkin
PARTITION BY
-lauseke jakaa työntekijät osastoittain. - Toiseksi
ORDER BY
lauseke järjestää jokaisen osaston työntekijän palkan mukaan laskevassa järjestyksessä. - Kolmanneksi
ROW_NUMBER()
määrittää jokaiselle riville peräkkäisen kokonaisluvun. . Se nollaa numeron, kun osasto muuttuu.
Seuraava näyttää alakyselyn tulosjoukon:
Ulommassa kyselyssä valitsimme vain työntekijärivit, joilla on row_num
arvo 1.
Tässä on koko kyselyn tulos:
Jos muutat lausekkeen WHERE
predikaatin arvoksi 1, 2, 3, ja niin edelleen, saat työntekijät, jotka sinulla on toiseksi korkein palkka, kolmanneksi korkein palkka ja niin edelleen.
Tässä opetusohjelmassa olet oppinut käyttämään SQL ROW_NUMBER()
-toimintoa järjestyksessä kokonaisluku jokaiselle riville kyselyn tulosjoukossa.
- Oliko tästä opetusohjelmasta hyötyä?
- KylläEi