Funkce SQL DENSE_RANK().

Funkce Sql Dense Rank



Funkce oken jsou klíčovou vlastností v SQL a hrají zásadní roli při komplexních výpočtech dat a operacích v SQL databázích. Jednou z funkcí ve funkcích okna SQL je dense_rank().

Funkce DENSE_RANK() nám umožňuje přiřadit jedinečné pořadí každému řádku v sadě výsledků na základě hodnot v jednom specifikovaném sloupci. Je velmi podobná funkci rank(), ale s malými rozdíly v tom, jak funkce zpracovává duplicitní záznamy.

V tomto tutoriálu prozkoumáme, jak tato funkce funguje, poskytnutou syntaxi a jak ji můžeme použít v databázi.







Jak to funguje

Začněme vysvětlením, jak tato funkce funguje. Je dobré mít na paměti, že funkce je na vysoké úrovni a nemůžeme vysvětlit základní implementaci.



Funkce funguje tak, že každému řádku v sadě výsledků přiřadí pořadí počínaje pořadím 1 a zvýší se o 1 pro každou jedinečnou hodnotu ve sloupcích.



Řádky s podobnými hodnotami (duplikáty) v zadaných sloupcích jsou přiřazeny se stejnou hodností a další řádek s jinou hodnotou je přiřazen s další dostupnou hodností bez jakýchkoli mezer.





Jak jsme zmínili, funkce nezanechává žádné mezery tam, kde jsou duplicitní hodnoty, čímž se liší od funkce rank().

Běžným použitím funkce dense_rank() je provádění operací řazení. Můžeme jej použít například k nalezení top N záznamů atd.



Syntaxe funkce:

Následující text popisuje syntaxi funkce dense_rank():

DENSE_RANK() PŘES (

[PARTITION BY partition_expression, ... ]

OBJEDNAT BY třídicí_výraz [ASC | DESC], ...

)

V dané syntaxi:

  1. Začneme samotnou funkcí hustý_rank().
  2. Klauzule OVER signalizuje začátek specifikací funkce okna. To definuje, jak se hodnocení použije v sadě výsledků.
  3. PARTITION BY oddíl_výraz je volitelná klauzule, která nám umožňuje rozdělit výslednou sadu do skupin nebo oddílů na základě jednoho nebo více sloupců. Hodnocení je aplikováno samostatně na každý oddíl, přičemž hodnocení se resetuje na nový oddíl.
  4. ORDER BY sort_expression určuje pořadí, ve kterém chceme třídit data ve výsledných oddílech.

Vzorek dat

Abychom demonstrovali, jak používat funkci dense_rank(), začněme tabulkou s ukázkovými daty. V našem případě používáme vzorovou tabulku „objednávky“ takto:

Příklad 1: Použití funkce Dense_Rank().

K seřazení výsledných objednávek na základě ceny můžeme použít funkci dense_rank(). Zvažte následující příklad dotazu:

VYBRAT

číslo objednávky,

customer_username,

produkt_zakoupen,

DENSE_RANK() PŘES (

OBJEDNAT PODLE

cena DISK

) price_rank

Z

objednávky o;

V uvedeném příkladu používáme funkci dense_rank() k seřazení dat na základě ceny objednávek. Vynecháme klauzuli PARTITION BY, protože data neseskupujeme.

Výsledný výstup je následující:

Příklad 2: PARTICE BY

Můžeme také přidat klauzuli PARTITION BY pro seskupení dat do různých segmentů, například podle zakoupeného produktu.

Příklad dotazu je následující:

VYBRAT

číslo objednávky,

customer_username,

produkt_zakoupen,

DENSE_RANK() PŘES (

rozdělení podle product_purchased

OBJEDNAT PODLE

cena DISK

) price_rank

Z

objednávky o;

To by mělo seskupit data do různých skupin na základě výsledných skupin a použít pořadí pro položky v každé skupině.

Závěr

V tomto příspěvku jsme se naučili základy používání a práce s funkcí okna dense_rank() v SQL pro přiřazení hodnocení hodnotám na základě konkrétních sloupců.