SQL Rang



SQL > SQL Avancé > Rang 

Afficher le rang associé à chaque ligne est une requête courante, mais cette procédure est plus délicate sous SQL. Pour afficher le rang sous SQL, il est nécessaire d’effectuer une jointure réflexive, de lister les résultats dans l’ordre, et de compter le nombre d’enregistrements énumérés (y compris) devant l’enregistrement de votre choix. Utilisons un exemple pour illustrer. Supposons que nous avons la table suivante

Table Total_Sales
 Name   Sales 
 John   10 
 Jennifer   15 
 Stella   20 
 Sophia   40 
 Greg   50 
 Jeff   20 

il faut saisir :

SELECT a1.Name, a1.Sales, COUNT(a2.sales) Sales_Rank
FROM Total_Sales a1, Total_Sales a2
WHERE a1.Sales <= a2.Sales OR (a1.Sales = a2.Sales AND a1.Name = a2.Name)
GROUP BY a1.Name, a1.Sales
ORDER BY a1.Sales DESC, a1.Name DESC;

Résultat:

Name  Sales  Sales_Rank
Greg  50  1
Sophia  40  2
Stella  20  3
Jeff  20  3
Jennifer  15  5
John  10  6

Concentrons-nous sur la clause WHERE. La première partie de la clause, (a1.Sales <= a2.Sales), nous permet de ne pas compter le nombre d’occurrences où la valeur de la colonne Sales est inférieure ou égale à elle-même. Si la colonne Sales ne contient pas de doublons, cette partie de la clause WHERE serait en elle-même suffisante pour générer le rang correct.

La deuxième partie de la clause, (a1.Sales = a2.Sales and a1.Name = a2.Name), garantit qu’en présence de doublons dans la colonne Sales, chaque valeur obtiendrait le rang correct.

SQL Médiane >>

Cette page a été mise à jour pour la dernière fois le 18/06/2022


Copyright © 2024   1keydata.com   Tous droits réservés