Sobes.tech
Middle

Quelle est la différence entre RANK et DENSE_RANK?

sobes.tech IA

Réponse de l'IA

RANK et DENSE_RANK sont des fonctions de fenêtre en SQL qui attribuent des rangs aux lignes dans une fenêtre, mais diffèrent dans leur comportement en cas de valeurs identiques (c’est-à-dire en cas d’égalité).

  • RANK() : Attribue le même rang aux valeurs identiques, mais saute les rangs suivants. Par exemple, si deux lignes partagent la première place, elles reçoivent toutes deux le rang 1, et la ligne suivante recevra le rang 3 (le rang 2 est sauté).

  • DENSE_RANK() : Attribue également le même rang aux valeurs identiques, mais ne saute pas de rangs. Dans le même exemple, deux lignes avec le rang 1, la suivante aura le rang 2.

Exemple :

Valeur RANK() DENSE_RANK()
100 1 1
100 1 1
90 3 2
80 4 3

Ainsi, DENSE_RANK() donne des rangs denses sans sauts, tandis que RANK() prend en compte les sauts en cas d’égalité.