SQL DENSE_RANK() -funktio

Sql Dense Rank Funktio



Ikkunafunktiot ovat keskeinen ominaisuus SQL:ssä ja niillä on keskeinen rooli monimutkaisissa datalaskutoimissa ja SQL-tietokantojen operaatioissa. Yksi SQL-ikkunan funktioista on dense_rank().

DENSE_RANK()-funktion avulla voimme määrittää yksilöllisen arvon tulosjoukon jokaiselle riville yhden määritetyn sarakkeen arvojen perusteella. Se on hyvin samanlainen kuin rank()-funktio, mutta sillä on pieniä eroja siinä, miten funktio käsittelee tietueiden kaksoiskappaleita.

Tässä opetusohjelmassa tutkimme tämän funktion toimintaa, toimitettua syntaksia ja kuinka voimme käyttää sitä tietokannassa.







Kuinka se toimii

Aloitetaan selittämällä, kuinka tämä toiminto toimii. On hyvä pitää mielessä, että toiminto on korkeatasoinen, emmekä voi selittää taustalla olevaa toteutusta.



Funktio toimii määrittämällä sijoitus jokaiselle tulosjoukon riville alkaen arvosta 1 ja kasvamalla 1:llä kullekin sarakkeiden yksilölliselle arvolle.



Määritettyjen sarakkeiden rivit, joilla on samanlaiset arvot (kaksoiskappaleet), määritetään samalla sijalla ja seuraavalle eri arvoiselle riville annetaan seuraava käytettävissä oleva arvo ilman aukkoja.





Kuten mainitsimme, funktio ei jätä aukkoja, joissa on päällekkäisiä arvoja, mikä tekee siitä erilaisen kuin rank()-funktio.

Dense_rank()-funktion yleinen käyttö on ranking-toimintojen suorittaminen. Voimme käyttää sitä esimerkiksi N:n suosituimman tietueen etsimiseen jne.



Funktion syntaksi:

Seuraavassa kuvataan dense_rank()-funktion syntaksi:

DENSE_RANK() YLI (

[PARTITION BY osion_lauseke, ... ]

TILAUS BY sort_expression [ASC | DESC], ...

)

Annetussa syntaksissa:

  1. Aloitamme itse dense_rank()-funktiosta.
  2. OVER-lause osoittaa ikkunan toimintomäärittelyjen alkamisen. Tämä määrittää, kuinka sijoitusta käytetään tulosjoukossa.
  3. PARTITION BY partition_expression on valinnainen lauseke, jonka avulla voimme osioida tuloksena olevan joukon ryhmiin tai osioihin yhden tai useamman sarakkeen perusteella. Luokitusta sovelletaan erikseen jokaisessa osiossa, ja arvo nollataan uudessa osiossa.
  4. ORDER BY sort_lauseke määrittää järjestyksen, jossa haluamme lajitella tiedot tuloksena olevissa osioissa.

Esimerkkitiedot

Havainnollistaaksemme, kuinka dense_rank()-funktiota käytetään, aloitetaan taulukosta, jossa on esimerkkitiedot. Meidän tapauksessamme käytämme mallitilaustaulukkoa seuraavasti:

Esimerkki 1: Dense_Rank()-funktion käyttö

Voimme käyttää dense_rank()-funktiota luomaan tuloksena olevat tilaukset hinnan perusteella. Harkitse seuraavaa esimerkkikyselyä:

VALITSE

tilausnumero,

customer_username,

product_purchased,

DENSE_RANK() YLI (

TILAUS BY

hinta DISC

) hinta_sijoitus

FROM

tilaukset o;

Annetussa esimerkissä käytämme funktiota dense_rank() arvostamaan tiedot tilausten hintojen perusteella. Jätämme pois PARTITION BY -lauseen, koska emme ryhmittele tietoja.

Tuloksena oleva tulos on seuraava:

Esimerkki 2: OSIJOITUS

Voimme myös lisätä PARTITION BY -lauseen ryhmitelläksesi tiedot eri segmentteihin, esimerkiksi ostetun tuotteen perusteella.

Esimerkkikysely on seuraava:

VALITSE

tilausnumero,

customer_username,

product_purchased,

DENSE_RANK() YLI (

osio product_purchased mukaan

TILAUS BY

hinta DISC

) hinta_sijoitus

FROM

tilaukset o;

Tämän pitäisi ryhmitellä tiedot eri ryhmiin tuloksena olevien ryhmien perusteella ja soveltaa kunkin ryhmän kohteiden sijoitusta.

Johtopäätös

Tässä viestissä opimme SQL:n dense_rank()-ikkunafunktion käytön ja sen kanssa työskentelyn perusteet arvon määrittämiseksi arvoille tiettyjen sarakkeiden perusteella.