Funkcia SQL DENSE_RANK().

Funkcia Sql Dense Rank



Funkcie okien sú kľúčovou vlastnosťou v SQL a zohrávajú základnú úlohu pri zložitých výpočtoch údajov a operáciách v databázach SQL. Jednou z funkcií vo funkciách okna SQL je dense_rank().

Funkcia DENSE_RANK() nám umožňuje priradiť jedinečné hodnotenie každému riadku v rámci množiny výsledkov na základe hodnôt v jednom špecifikovanom stĺpci. Je veľmi podobná funkcii rank(), ale s malými rozdielmi v tom, ako funkcia spracováva duplicitné záznamy.

V tomto návode preskúmame, ako táto funkcia funguje, poskytnutú syntax a ako ju môžeme použiť v databáze.







Ako to funguje

Začnime vysvetlením, ako táto funkcia funguje. Je dobré mať na pamäti, že funkcia je na vysokej úrovni a nedokážeme vysvetliť jej základnú implementáciu.



Funkcia funguje tak, že každému riadku v sade výsledkov priradí poradie od poradia 1 a zvýši sa o 1 pre každú jedinečnú hodnotu v stĺpcoch.



Riadkom s podobnými hodnotami (duplikáty) v určených stĺpcoch sa priradí rovnaké poradie a ďalšiemu riadku s inou hodnotou sa priradí ďalšie dostupné poradie bez medzier.





Ako sme spomenuli, funkcia nezanecháva žiadne medzery tam, kde sú duplicitné hodnoty, čím sa líši od funkcie rank().

Bežným používaním funkcie dense_rank() je vykonávanie operácií hodnotenia. Môžeme ho použiť napríklad na nájdenie top N záznamov atď.



Syntax funkcie:

Nasledujúci text popisuje syntax funkcie dense_rank():

DENSE_RANK() NAD (

[PARTITION BY partition_expression, ... ]

OBJEDNAŤ PODĽA výrazu triedenia [ASC | DESC], ...

)

V danej syntaxi:

  1. Začneme samotnou funkciou dense_rank().
  2. Klauzula OVER signalizuje začiatok špecifikácií funkcie okna. Toto definuje, ako sa hodnotenie použije v rámci sady výsledkov.
  3. PARTITION BY partition_expression je voliteľná klauzula, ktorá nám umožňuje rozdeliť výslednú množinu do skupín alebo oblastí na základe jedného alebo viacerých stĺpcov. Hodnotenie sa aplikuje samostatne na každý oddiel, pričom poradie sa resetuje na nový oddiel.
  4. ORDER BY sort_expression špecifikuje poradie, v ktorom chceme použiť triedenie dát vo výsledných partíciách.

Vzorové údaje

Aby sme demonštrovali, ako používať funkciu dense_rank(), začnime s tabuľkou so vzorovými údajmi. V našom prípade používame vzorovú tabuľku „objednávok“ nasledovne:

Príklad 1: Použitie funkcie Dense_Rank().

Na zoradenie výsledných objednávok na základe ceny môžeme použiť funkciu dense_rank(). Zvážte nasledujúci príklad dotazu:

SELECT

Číslo objednávky,

customer_username,

produkt_nakupeny,

DENSE_RANK() NAD (

OBJEDNAŤ BY

cena DISK

) price_rank

OD

objednávky o;

V uvedenom príklade používame funkciu dense_rank() na zoradenie údajov na základe ceny objednávok. Vynecháme klauzulu PARTITION BY, pretože údaje nezoskupujeme.

Výsledný výstup je nasledovný:

Príklad 2: ROZDELENIE BY

Môžeme tiež pridať klauzulu PARTITION BY na zoskupenie údajov do rôznych segmentov, napríklad na základe zakúpeného produktu.

Príklad dotazu je nasledujúci:

SELECT

Číslo objednávky,

customer_username,

produkt_nakupeny,

DENSE_RANK() NAD (

rozdelenie podľa product_purchased

OBJEDNAŤ BY

cena DISK

) price_rank

OD

objednávky o;

To by malo zoskupiť údaje do rôznych skupín na základe výsledných skupín a použiť poradie pre položky v každej skupine.

Záver

V tomto príspevku sme sa naučili základy používania a práce s funkciou okna dense_rank() v SQL na priradenie poradia hodnotám na základe konkrétnych stĺpcov.