SQL ROW_NUMBER (Čeština)

Shrnutí: v tomto výukovém programu se naučíte, jak pomocí ROW_NUMBER() přiřadit každému řádku pořadové číslo v sadě výsledků dotazu.

Přehled funkcí SQL ROW_NUMBER ()

ROW_NUMBER() je funkce okna, která přiřadí pořadové celé číslo každý řádek v sadě výsledků dotazu.

Následující text ilustruje syntaxi funkce ROW_NUMBER():

V této syntaxi

  • Nejprve klauzule PARTITION BY rozdělí sadu výsledků vrácenou z FROM klauzule do oddílů. Klauzule PARTITION BY je volitelná. Pokud to vynecháte, celá sada výsledků bude považována za jeden oddíl.
  • Potom klauzule ORDER BY seřadí řádky v každém oddílu. Protože ROW_NUMBER() je funkce citlivá na pořadí, je vyžadována klauzule ORDER BY.
  • Nakonec každý řádek v každém oddílu je přiřazeno pořadové celé číslo, které se říká číslo řádku. Číslo řádku se resetuje při každém překročení hranice oddílu.

Příklady SQL ROW_NUMBER ()

Použijeme employees a departments tabulky z ukázkové databáze pro demonstraci:

A) Jednoduchý příklad SQL ROW_NUMBER ()

Následující příkaz vyhledá křestní jméno, příjmení a plat všech zaměstnanců. Kromě toho používá funkci ROW_NUMBER() k přidání postupného celého čísla do každého řádku.

Následující obrázek zobrazuje dílčí sadu výsledků:

B ) Použití SQL ROW_NUMBER () pro stránkování

Pro stránkování lze použít funkci ROW_NUMBER(). Chcete-li například zobrazit všechny zaměstnance v tabulce v aplikaci podle stránek, které každá stránka obsahuje deset záznamů.

  • Nejprve použijte ROW_NUMBER() přiřadí každému řádku pořadové celé číslo.
  • Zadruhé, filtruje řádky podle požadované stránky. Například první stránka má řádky začínající od 1 do 9 a druhá stránka má řádky začínající od 11 do 20 atd.

Následující příkaz vrací záznamy o druhá stránka, každá stránka má deset záznamů.

Následující ukazuje výstup:

Pokud chcete místo poddotazu použít běžný tabulkový výraz (CTE), je zde dotaz:

C) Použití SQL ROW_NUMBER () pro nalezení n-té nejvyšší hodnoty na skupinu

Následující příklad ukazuje, jak najít zaměstnance, kteří mají ve svých odděleních nejvyšší plat:

V poddotazu:

  • Nejprve klauzule PARTITION BY rozděluje zaměstnance podle oddělení.
  • Zadruhé, ORDER BY klauzule seřadí zaměstnance v každém oddělení podle platu v sestupném pořadí.
  • Zatřetí, ROW_NUMBER() každému řádku přiřadí pořadové celé číslo . Při změně oddělení resetuje číslo.

Následující ukazuje sadu výsledků poddotazu:

Ve vnějším dotazu jsme vybrali pouze řádky zaměstnanců, které mají row_num s hodnota 1.

Zde je výstup celého dotazu:

Pokud změníte predikát v klauzuli WHERE z 1 na 2, 3 atd., získáte zaměstnance, kteří mít druhý nejvyšší plat, třetí nejvyšší plat atd.

V tomto kurzu jste se naučili používat funkci SQL ROW_NUMBER() k přiřazení sekvenčního celé číslo do každého řádku ve výsledkové sadě dotazu.

  • Byl tento výukový program užitečný?
  • AnoNe

Write a Comment

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *