Zum Hauptinhalt springen
Übersetzte Seite

Diese Seite wurde mit KI-Unterstützung aus dem Englischen übersetzt. Bei Abweichungen ist die englische Version maßgeblich.

RANK

Gibt den Rang der aktuellen Zeile mit Lücken zurück. Dies ist die ROW_NUMBER des ersten Peers in jeder Gruppe. Zeilen mit gleichen Werten in den Sortierspalten erhalten denselben Rang, und der nächste Rangwert wird um die Anzahl der gleichrangigen Zeilen erhöht (es entstehen Lücken).

Gibt es keine ORDER BY-Klausel, gelten alle Zeilen als Peers, und diese Funktion gibt immer 1 zurück.

Siehe auch: [SELECT] [ROW_NUMBER] [DENSE_RANK]


Syntax​

SELECT RANK() OVER ([PARTITION BY column] ORDER BY column [ASC|DESC])
FROM <multipartIdentifier>;

Argumente​

PARTITION BY column Optional. Teilt die Ergebnismenge in Partitionen auf. Die Funktion RANK wird auf jede Partition separat angewendet.

ORDER BY column Legt die Reihenfolge fest, in der die Ränge vergeben werden. Gibt es keine ORDER BY-Klausel, gelten alle Zeilen als Peers und erhalten den Rang 1.

Rückgabewert(e)​

Gibt eine Ganzzahl zurück, die den Rang der aktuellen Zeile innerhalb der Partition darstellt, mit Lücken bei gleichen Werten.


Beispiele​

Rang der Mitwirkenden nach Beiträgen ermitteln (mit Lücken)​

-- Rank contributors with gaps for ties
SELECT
login,
contributions,
RANK() OVER (ORDER BY contributions DESC) as rank
FROM github.repos.contributors
WHERE owner = 'stackql'
AND repo = 'stackql';

RANK mit DENSE_RANK und ROW_NUMBER vergleichen​

-- Compare RANK vs DENSE_RANK vs ROW_NUMBER for contributors
SELECT
login,
contributions,
RANK() OVER (ORDER BY contributions DESC) as rank,
DENSE_RANK() OVER (ORDER BY contributions DESC) as dense_rank,
ROW_NUMBER() OVER (ORDER BY contributions DESC) as row_num
FROM github.repos.contributors
WHERE owner = 'stackql'
AND repo = 'stackql';

Rang der Mitwirkenden innerhalb jedes Repositorys mit PARTITION BY ermitteln​

-- Rank contributors within each repo
WITH repo_contributors AS (
SELECT
repo,
login,
contributions,
RANK() OVER (PARTITION BY repo ORDER BY contributions DESC) as rank_in_repo
FROM (
SELECT 'stackql' as repo, login, contributions
FROM github.repos.contributors
WHERE owner = 'stackql' AND repo = 'stackql'
UNION ALL
SELECT 'stackql-provider-registry' as repo, login, contributions
FROM github.repos.contributors
WHERE owner = 'stackql' AND repo = 'stackql-provider-registry'
) t
)
SELECT
repo,
login,
contributions,
rank_in_repo
FROM repo_contributors
ORDER BY repo, rank_in_repo;

Weitere Informationen finden Sie unter https://sqlite.org/windowfunctions.html#built-in_window_functions.