Diese Seite wurde mit KI-Unterstützung aus dem Englischen übersetzt. Bei Abweichungen ist die englische Version maßgeblich.
DENSE_RANK
Gibt den Rang der aktuellen Zeile ohne Lücken zurück. Dies ist die Nummer der Peer-Gruppe der aktuellen Zeile innerhalb ihrer Partition. Zeilen mit gleichen Werten in den Sortierspalten erhalten denselben Rang, und der nächste Rangwert wird immer um 1 erhöht (keine Lücken).
Die Zeilen werden beginnend bei 1 in der Reihenfolge nummeriert, die durch die ORDER BY-Klausel in der Fensterdefinition festgelegt ist. Gibt es keine ORDER BY-Klausel, gelten alle Zeilen als Peers, und diese Funktion gibt immer 1 zurück.
Siehe auch:
[SELECT] [ROW_NUMBER] [RANK]
Syntax
SELECT DENSE_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 DENSE_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 lückenlosen Rang der aktuellen Zeile innerhalb der Partition darstellt, ohne Lücken bei gleichen Werten.
Beispiele
Rang der Mitwirkenden nach Beiträgen ermitteln (ohne Lücken)
-- Rank contributors without gaps for ties
SELECT
DENSE_RANK() OVER (ORDER BY contributions DESC) as rank,
login,
contributions,
html_url
FROM github.repos.contributors
WHERE owner = 'stackql'
AND repo IN ('stackql', 'stackql-deploy', 'stackql-provider-registry')
ORDER BY contributions DESC;
DENSE_RANK mit 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 aggregierter Beiträge über mehrere Repositorys ermitteln
-- Rank total contributions across multiple repos
WITH all_contributors AS (
SELECT login, contributions, html_url
FROM github.repos.contributors
WHERE owner = 'stackql' AND repo = 'stackql'
UNION ALL
SELECT login, contributions, html_url
FROM github.repos.contributors
WHERE owner = 'stackql' AND repo = 'stackql-deploy'
UNION ALL
SELECT login, contributions, html_url
FROM github.repos.contributors
WHERE owner = 'stackql' AND repo = 'stackql-provider-registry'
)
SELECT
DENSE_RANK() OVER (ORDER BY SUM(contributions) DESC) as rank,
login,
SUM(contributions) as total_contributions,
MAX(html_url) as html_url
FROM all_contributors
GROUP BY login
ORDER BY total_contributions DESC;
Weitere Informationen finden Sie unter https://sqlite.org/windowfunctions.html#built-in_window_functions.