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.