Cette page a été traduite de l'anglais avec l'aide de l'IA. En cas de divergence, la version anglaise fait référence.
RANK
Renvoie le rang de la ligne courante, avec des trous. Il s'agit du ROW_NUMBER du premier pair de chaque groupe. Les lignes ayant des valeurs égales pour les colonnes de tri reçoivent le même rang, et la valeur de rang suivante est incrémentée du nombre de lignes à égalité (ce qui laisse des trous).
En l'absence de clause ORDER BY, toutes les lignes sont considérées comme des pairs et cette fonction renvoie toujours 1.
Voir aussi :
[SELECT] [ROW_NUMBER] [DENSE_RANK]
Syntaxe
SELECT RANK() OVER ([PARTITION BY column] ORDER BY column [ASC|DESC])
FROM <multipartIdentifier>;
Arguments
PARTITION BY column
Facultatif. Divise le jeu de résultats en partitions. La fonction RANK est appliquée à chaque partition séparément.
ORDER BY column
Spécifie l'ordre dans lequel les rangs sont attribués. En l'absence de clause ORDER BY, toutes les lignes sont considérées comme des pairs et reçoivent le rang 1.
Valeur(s) renvoyée(s)
Renvoie un entier représentant le rang de la ligne courante au sein de la partition, avec des trous pour les valeurs à égalité.
Exemples
Classer les contributeurs par contributions (avec des trous)
-- 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';
Comparer RANK avec DENSE_RANK et ROW_NUMBER
-- 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';
Classer les contributeurs au sein de chaque dépôt avec PARTITION BY
-- 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;
Pour plus d'informations, consultez https://sqlite.org/windowfunctions.html#built-in_window_functions.