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 Median >>



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


SQL Avancé
SQL UNION
SQL UNION ALL
SQL INTERSECT
SQL MINUS
SQL Sous-requête
SQL EXISTS
SQL CASE
SQL Rang
SQL Médiane
SQL Exécution totale
SQL Pourcentage du total
SQL Pourcentage du total cumulatif




Plan du site