sql >> Databáze >  >> RDS >> Database

Jak přidat pozice hodnocení do řádků pomocí DENSE_RANK() v SQL

Problém:

Chcete přidat pořadí pořadí do řádků po sobě, i když mají řádky stejné hodnoty.

Příklad:

Naše databáze má tabulku s názvem competition s údaji v následujících sloupcích:id (primární klíč), first_name , last_name a score .

id křestní_jméno příjmení skóre
11 Jan Thomas 345
14 Marie Johnson 222
16 Lisa Hnědá 154
23 Alan Blake 222
32 Chris Taylor 154

Zobrazme všechny podrobnosti o studentech:jejich příjmení, jméno a skóre seřazené podle score v sestupném pořadí. Nechceme přeskočit čísla pozic, pokud jsou některá skóre stejná pro více než jednoho studenta.

Řešení 1:

SELECT DENSE_RANK() OVER(ORDER BY score DESC) AS d_rank,
  first_name,
  last_name,
  score
FROM competition;

Všimněte si, že pořadí se pohybuje od 1 do 3.

Diskuse:

Použijte DENSE_RANK pokud nechcete přeskočit pozice v pořadí po řádcích se stejnou pozicí. V našem příkladu, přestože Mary a Alan mají stejnou hodnost 2, pozice pro Lisu je 3.


  1. Rozdíl dvou dat a času na serveru SQL

  2. LIKE vs CONTAINS na SQL Server

  3. Výběr dat do pole Postgres

  4. Jak funguje ATAN2() v MariaDB