Bonjour,
Je souhaites effectuer la sum de 20 colonnes et n'afficher que celle qui ont les 10 plus grande valeur, est-ce possible , pouvez-vous m'aiguiller.
Merci.
Cordialement.
Bonjour,
Je souhaites effectuer la sum de 20 colonnes et n'afficher que celle qui ont les 10 plus grande valeur, est-ce possible , pouvez-vous m'aiguiller.
Merci.
Cordialement.
Quelque chose dans ce goût-là.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 ; WITH SR1 AS ( SELECT Id, col1, col2, col_A + col_B + col_C + col_D as Total FROM dbo.MaTable ) , SR2 AS ( SELECT Id, col1, col2, Total , ROW_NUMBER() OVER(ORDER BY Total DESC ) AS RowID_TotalOrderDesc FROM SR1 ) SELECT Id, col1, col2, Total , RowID_TotalOrderDesc from SR2 where RowID_TotalOrderDesc >=10
Doit y avoir plus simple mais ça fait la job.
Euh...
Pourquoi pas un simple TOP 10 avec un order by ?
Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 SELECT top 10 Id, col1, col2, col_A + col_B + col_C + col_D as Total FROM dbo.MaTable order by total desc
On ne jouit bien que de ce qu’on partage.
J'ajoute mon petit grain de sel, car "il me semble" qu'en cas d'ex-aequo les deux solutions ne donnent pas le même résultat.
Si les 5 premières lignes renvoient la même valeur, faut-il renvoyer 10 lignes, ou 14 ?
Tatayo.
Hmmmm ROW_NUMBER() donne des nombres différents en cas d'ex aequo dans la clause ORDER BY du moment qu'on n'a pas de partitionnement, non ? (contrairement à RANK() et DENSE_RANK())
C'est d'ailleurs pour cette raison que ROW_NUMBER() n'est pas déterministe et que deux exécutions successives de la même requête peuvent donner des résultats différents.
On ne jouit bien que de ce qu’on partage.
Effectivement, je viens de demander à RTFM, et il n'y a pas de doublons dans la numérotation avec ROW_NUMBER.
Mais je maintiens quand même ma question (moi têtu ? non, si peu ) Bgrinch veut "les lignes qui ont les 10 plus grandes valeurs", et non les 10 premières lignes. Donc en cas d'ex-aequo, pour moi il faut renvoyer plus de 10 lignes, et donc utiliser la méthode de 7gyY9w1ZY6ySRgPeaefZ mais avec un DENSE_RANK.
Tatayo.
Bonsoir,
Il me semble que TOP 10 WITH TIES renverra 14 lignes ...
Le savoir est une nourriture qui exige des efforts.
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
* * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager