Fonctions RANK & DENSE_RANK
Fait partie de la section Les fondamentaux du Journey SQL de Coddy. Leçon 65 sur 72.
ROW_NUMBER() est un type de fonction de classement, et il en existe deux autres : RANK() et DENSE_RANK().
La fonction RANK() numérote les lignes comme ROW_NUMBER(), mais elle attribue des numéros identiques aux mêmes lignes et ignore des numéros. DENSE_RANK() est similaire à RANK(), mais elle n’ignore pas de numéros.
Par exemple :
| id | niveau |
| 1 | 5 |
| 2 | 6 |
| 3 | 6 |
| 4 | 7 |
| 5 | 7 |
| 6 | 5 |
SELECT id,
ROW_NUMBER() OVER (ORDER BY level) as row_num,
RANK() OVER (ORDER BY level) as row_rank,
DENSE_RANK() OVER (ORDER BY level) as row_dense_rank
FROM table1Cela renverra :
| id | row_num | row_rank | row_dense_rank |
| 1 | 1 | 1 | 1 |
| 6 | 2 | 1 | 1 |
| 2 | 3 | 3 | 2 |
| 3 | 4 | 3 | 2 |
| 4 | 5 | 5 | 3 |
| 5 | 6 | 5 | 3 |
Explication :
ROW_NUMBER(): Toujours unique : 1, 2, 3, 4, 5, 6RANK():- niveau 5 (2 lignes) : les deux obtiennent le rang 1
- niveau 6 (2 lignes) : les deux obtiennent le rang 3 (le 2 est ignoré)
- niveau 7 (2 lignes) : les deux obtiennent le rang 5 (le 4 est ignoré)
DENSE_RANK():- niveau 5 (2 lignes) : les deux obtiennent le rang 1
- niveau 6 (2 lignes) : les deux obtiennent le rang 2 (aucun saut)
- niveau 7 (2 lignes) : les deux obtiennent le rang 3 (aucun saut)
Défi
FacileTables et colonnes disponibles :
medals:region,medal_color,medal_count
Créez une requête qui affiche la région, le nombre total de médailles (somme de toutes les médailles, quelle que soit leur couleur) et deux types de classements :
- Un
regular_rank(avec des écarts) sur la somme des médailles - Un
dense_rank(sans écarts) sur la somme des médailles
Ordonnez le résultat par :
order by total_medals desc, region ascEssayez vous-même
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Les fondamentaux
1Introduction
IntroductionQu’est-ce qu’une base de donnéesConcepts des bases de donnéesValeurs uniques4D’autres mots-clés
Le mot-clé INLe mot-clé BETWEENLe mot-clé LIKELe mot-clé ASRécapitulatif - Modèles de téléphones portables2Conditions
Bases des conditionsLe mot-clé ANDLe mot-clé ORLe mot-clé NOTCombinaison de plusieurs conditionsParenthèsesBooléens5Opérations arithmétiques
Opérateurs mathématiquesColonnes mathématiquesL’opération moduloLa fonction ROUND()3Format de retour spécifique
Valeurs NULLTrier les résultats, partie 1Trier les résultats, partie 2Récapitulatif - Entreprise de cybersécuritéLimiter le nombre d’enregistrementsRécapitulatif - Usine de véhicules6Défis d’introduction
Récapitulatif - Élection parlementaireRécapitulatif - Arrestation criminelle par la policeRécapitulatif - Récipient de boisson au barRécapitulatif - Ingénieur de nouvelles colonnes9Tables multiples
Jointure de base, partie 1Jointure de base, partie 2Récapitulatif - JointureAuto-jointureRécapitulatif - Auto-jointureUnionSimplifier les requêtes, mot-clé WITHRécapitulatif - Requêtes WITHRécapitulatif - Entrepreneur immobilier12Fonctions de fenêtre – partie 2
Fonctions RANK & DENSE_RANKRécapitulatif – RANK & DENSE_RANKFonction NTILEFonctions d’agrégationCritère ROWS & RANGEEntraînez-vous par vous-même : Playground SQL