logo

Funkce RANK v SQL Server

Funkce RANK v SQL Server je druh funkce hodnocení. Tato funkce bude přiřaďte číslo každému řádku v oddílu výstupu . Každému řádku přiřadí pořadí jako jedna plus pořadí předchozího řádku. Když funkce RANK najde dvě hodnoty, které jsou identické v rámci stejného oddílu, přiřadí jim stejné číslo pořadí. Kromě toho bude dalším číslem v žebříčku předchozí hodnost plus duplicitní čísla. Proto tato funkce ne vždy přiřazuje pořadí řádků v po sobě jdoucím pořadí.

Funkce RANK je také dílčí částí okenních funkcí. Při používání této funkce je třeba mít na paměti následující body :

do řetězce
  • Vždy funguje s klauzulí OVER().
  • Každému řádku přiřadí pořadí na základě klauzule ORDER BY.
  • Každému řádku přiřadí pořadí v po sobě jdoucím pořadí.
  • Řádkům vždy přiřadí pořadí, počínaje jedničkou pro každý nový oddíl.

POZNÁMKA: Pořadí přiřadí dočasné hodnoty pro řádky v rámci oddílu, když je dotaz spuštěn.

SQL Server poskytuje následující funkce hodnocení :

  • HODNOST()
  • ROW_NUMBER()
  • DENSE_RANK()
  • NTILE()

Pojďme se podrobně naučit každou funkci hodnosti. Nejprve si vytvoříme tabulku pro demonstraci všech těchto funkcí. Následující příkazy vytvoří tabulku s názvem rank_demo se třemi sloupci:

 CREATE TABLE rank_demo ( first_name VARCHAR(60), last_name VARCHAR(40), city VARCHAR(30) ); 

Dále do této tabulky vložíme několik řádků, jak je uvedeno níže:

 INSERT INTO rank_demo (first_name, last_name, city) VALUES ('Luisa', 'Evans', 'Texas'), ('Paul', 'Ward', 'Alaska'), ('Peter', 'Bennett', 'California'), ('Carlos', 'Patterson', 'New York'), ('Rose', 'Huges', 'Florida'), ('Marielia', 'Simmons', 'Texas'), ('Antonio', 'Butler', 'New York'), ('Diego', 'Cox', 'California'); 

Tabulku můžeme ověřit pomocí příkazu SELECT. Zobrazí následující výstup:

Funkce RANK v SQL Server

Funkce RANK().

Tato funkce se používá k určení pořadí pro každý řádek v sadě výsledků. Následující syntaxe ilustruje použití funkce RANK v SQL Server:

 SELECT column_name RANK() OVER ( PARTITION BY expression ORDER BY expression [ASC|DESC]) AS 'my_rank' FROM table_name; 

V této syntaxi

  • The klauzule OVER nastavuje rozdělení a řazení výsledku před použitím přidružené funkce okna.
  • The PARTICE BY klauzule rozděluje výstup vytvořený klauzulí FROM do oddílu. Poté se funkce aplikuje na každý oddíl a znovu se inicializuje, když hranice oddílu překročí oddíly. Pokud jsme tuto klauzuli nedefinovali, bude funkce považovat všechny řádky za jeden oddíl.
  • The SEŘADIT PODLE je povinná klauzule, která určuje pořadí řádků sestupně nebo vzestupně na základě jednoho nebo více názvů sloupců před použitím funkce.

Příklad

Podívejme se, jak funguje funkce RANK() v SQL Server. Níže uvedený příkaz použije funkci pořadí k přiřazení číslování pro každý řádek:

 SELECT first_name, last_name, city, RANK () OVER (ORDER BY city) AS Rank_No FROM rank_demo; 

Vzhledem k tomu, že jsme nepoužívali PARTICE BY klauzule , funkce považovala celý výsledek za jeden oddíl. Po provedení příkazu se zobrazí následující výstup:

Funkce RANK v SQL Server

V tomto výstupu můžeme vidět, že některé řádky mají stejnou hodnotu, protože mají stejnou hodnotu v městský sloup . A další číslo v žebříčku bude jeho předchozí hodnost plus počet duplicitních čísel.

Následující prohlášení je další příklad kde budeme používat oddíl podle klauzule, který rozdělí řádky na základě město sloupec a přiřadit hodnocení každému řádku v rámci oddílu. Pořadí výstupu je založeno na jméno :

 SELECT first_name, last_name, city, RANK () OVER (PARTITION BY city ORDER BY first_name) AS Rank_No FROM rank_demo; 

Zobrazí následující výstup:

Funkce RANK v SQL Server

Funkce ROW_NUMBER().

Tato funkce se používá vrátit jedinečné pořadové číslo pro každý řádek v rámci jeho oddílu. Číslování řádků začíná na jedné a zvyšuje se o jednu, dokud není dosaženo celkového počtu řádků oddílu. Vrátí různé úrovně pro řádek s podobnými hodnotami, které jej odlišují od funkce RANK().

Níže uvedená syntaxe ilustruje použití funkce ROW_NUMBER() v SQL Server:

výlet ale
 SELECT column_name ROW_NUMBER() OVER ( PARTITION BY expression ORDER BY expression [ASC|DESC]) AS 'rank_name' FROM table_name; 

Příklad

Proveďte následující dotaz pro přiřazení pořadového čísla pro každý řádek:

 SELECT first_name, last_name, city, ROW_NUMBER() OVER(ORDER BY city) AS my_rank FROM rank_demo; 

To přiřadí pořadí pro tabulku podle jejich město . Zde vidíme, že přiděluje různé hodnosti pro řádek, který má stejné hodnoty města.

náhodné číslo v java
Funkce RANK v SQL Server

Pokud změníme pořadí řazení z vzestupně sestupně s klauzulí ORDER BY tato funkce také odpovídajícím způsobem změní RANK. Viz níže uvedené prohlášení:

 SELECT first_name, last_name, city, ROW_NUMBER() OVER(ORDER BY city DESC) AS my_rank FROM rank_demo; 

Zde je výsledek:

Funkce RANK v SQL Server

Funkce DENSE_RANK().

Tato funkce přiřazuje jedinečné pořadí pro každý řádek v rámci oddílu podle zadané hodnoty sloupce bez mezer. Vždy určuje pořadí v po sobě jdoucím pořadí. Pokud dostaneme a duplicitní hodnota , tato funkce mu přiřadí stejné pořadí a další pořadí je dalším pořadovým číslem. Tato charakteristika se liší funkce DENSE_RANK() od funkce RANK().

Níže uvedená syntaxe ilustruje použití funkce DENSE_RANK() v SQL Server:

 SELECT column_name DENSE_RANK() OVER ( PARTITION BY expression ORDER BY expression [ASC|DESC]) AS 'rank_name' FROM table_name; 

Příklad

Následující dotaz používá funkci DENSE_RANK() k přiřazení čísla pořadí pro každý řádek:

 SELECT first_name, last_name, city, DENSE_RANK() OVER(ORDER BY city) AS my_rank FROM rank_demo; 

Vrátí níže uvedený výstup, kde můžeme vidět, že duplicitní hodnoty mají stejné pořadí a následující pořadí bude dalším pořadovým číslem.

Funkce RANK v SQL Server

Je to další příklad funkce DENSE_RANK() pomocí klauzule PARTITION BY. Tato klauzule rozdělí řádky na základě sloupce města a pořadí sady výsledků je založeno na křestním_jménu:

 SELECT first_name, last_name, city, DENSE_RANK() OVER(PARTITION BY city ORDER BY first_name) AS my_rank FROM rank_demo; 

Získáme níže uvedený výstup, protože žádná dvě jména nejsou stejná. V tomto případě je výstup podobný funkci RANK().

Funkce RANK v SQL Server

Upravme název pomocí následujícího dotazu:

smtp internetový protokol
 Update rank_demo set first_name = 'Diego' WHERE city = 'California' 

Nyní proveďte stejný dotaz znovu. Uvidíme, že tato tabulka dostala stejný název Kalifornské město . Hodnost je tedy u obou jmen stejná.

Funkce RANK v SQL Server

Funkce NTILE(N).

Tato funkce se používá rozdělit řádky uspořádaného oddílu do předem definovaného počtu (N) přibližně stejných skupin. Každá skupina řádků získá své pořadí na základě definované podmínky a začne číslovat od jedné skupiny. Přiděluje a číslo kbelíku pro každý řádek ve skupině představující skupinu, do které patří.

Následující syntaxe ilustruje použití funkce NTILE() v SQL Server:

 SELECT column_name NTILE(N) OVER ( PARTITION BY expression ORDER BY expression [ASC|DESC]) AS 'my_rank' FROM table_name; 

Příklad

Následující dotaz používá funkci NTILE() k přiřazení čísla pořadí pro každý řádek:

 SELECT first_name, last_name, city, NTILE(3) OVER(ORDER BY city) AS my_rank FROM rank_demo; 

Zadaná tabulka má osm záznamů . Proto, NTILE(3) říká, že výsledná sada musí mít a skupina tří záznamů . Po provedení příkazu se zobrazí následující výstup:

Funkce RANK v SQL Server

Tento článek vysvětlí všechny funkce RANK používané v SQL Server s různými příklady. Ukazuje také hlavní rozdíly mezi těmito funkcemi. Tyto funkce jsou velmi užitečné pro vývojáře, aby dobře prozkoumávali a spravovali svá data.