SQL DENSE_RANK() függvény

Sql Dense Rank Fuggveny



Az ablakfüggvények döntő fontosságúak az SQL-ben, és alapvető szerepet játszanak az SQL-adatbázisok összetett adatszámításaiban és műveleteiben. Az SQL ablakfüggvények egyik függvénye a dense_rank().

A DENSE_RANK() függvény lehetővé teszi, hogy egy eredményhalmaz minden sorához egyedi rangot rendeljünk egy további megadott oszlop értékei alapján. Nagyon hasonlít a rank() függvényhez, de kis eltérésekkel abban, hogy a függvény hogyan kezeli az ismétlődő rekordokat.

Ebben az oktatóanyagban megvizsgáljuk ennek a függvénynek a működését, a megadott szintaxist és azt, hogyan használhatjuk adatbázisban.







Hogyan működik

Kezdjük azzal, hogy elmagyarázzuk, hogyan működik ez a függvény. Érdemes szem előtt tartani, hogy a függvény magas szintű, és nem tudjuk megmagyarázni a mögöttes megvalósítást.



A függvény úgy működik, hogy az eredményhalmaz minden sorához rangot rendel az 1. rangtól kezdve, és az oszlopok minden egyedi értékéhez 1-gyel nő.



A megadott oszlopokban található hasonló értékű (duplikált) sorok azonos rangot kapnak, a következő, eltérő értékű sor pedig a következő elérhető rangot kapja, hézagok nélkül.





Mint már említettük, a függvény nem hagy hézagot ott, ahol duplikált értékek vannak, ami eltér a rank() függvénytől.

A dense_rank() függvény általános használata a rangsorolási műveletek végrehajtása. Használhatjuk például a legjobb N rekord megkeresésére stb.



Függvény szintaxis:

Az alábbiakban a dense_rank() függvény szintaxisát írjuk le:

DENSE_RANK() OVER (

[PARTITION BY partíciókifejezés, ... ]

RENDELÉS rendezési_kifejezés szerint [ASC | DESC], ...

)

Az adott szintaxisban:

  1. Magával a dense_rank() függvénnyel kezdjük.
  2. Az OVER záradék jelzi az ablakfunkció specifikációinak kezdetét. Ez határozza meg, hogy a rangsor hogyan kerül alkalmazásra az eredménykészleten belül.
  3. A PARTITION BY partition_expression egy opcionális záradék, amely lehetővé teszi számunkra, hogy a kapott halmazt egy vagy több oszlop alapján csoportokba vagy partíciókra bontsuk. A rangsorolást a rendszer minden partíción külön alkalmazza, és a rangsor alaphelyzetbe áll egy új partíciónál.
  4. Az ORDER BY sort_expression megadja, hogy milyen sorrendben kívánjuk rendezni az eredményül kapott partíciókban lévő adatokat.

Minta adat

A dense_rank() függvény használatának bemutatásához kezdjük egy mintaadatokat tartalmazó táblázattal. Esetünkben egy minta „megrendelések” táblázatot használunk az alábbiak szerint:

1. példa: Dense_Rank() függvényhasználat

A dense_rank() függvény segítségével rangsorolhatjuk a kapott megbízásokat az ár alapján. Tekintsük a következő példalekérdezést:

KIVÁLASZTÁS

Rendelés azonosító,

customer_username,

product_purchased,

DENSE_RANK() OVER (

RENDELÉS ÁLTAL

ár LEMEZ

) price_rank

TÓL TŐL

megrendelések o;

Az adott példában a dense_rank() függvény segítségével rangsoroljuk az adatokat a megbízások ára alapján. Kihagyjuk a PARTITION BY záradékot, mivel nem csoportosítjuk az adatokat.

A kapott kimenet a következő:

2. példa: PARTÍCIÓ

A PARTITION BY záradékot is hozzáadhatjuk az adatok különböző szegmensekbe történő csoportosításához, például a megvásárolt termék alapján.

Egy példalekérdezés a következő:

KIVÁLASZTÁS

Rendelés azonosító,

customer_username,

product_purchased,

DENSE_RANK() OVER (

partíció a megvásárolt termék szerint

RENDELÉS ÁLTAL

ár LEMEZ

) price_rank

TÓL TŐL

megrendelések o;

Ennek során az eredményül kapott csoportok alapján különböző csoportokba kell csoportosítani az adatokat, és az egyes csoportok elemeire rangsorolni kell.

Következtetés

Ebben a bejegyzésben megtanultuk az SQL dense_rank() ablakfüggvényének használatának és használatának alapjait, hogy rangot rendeljünk az értékekhez bizonyos oszlopok alapján.