|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Administrateur de base de données Inscription : octobre 2002 Messages : 31 ![]() |
Bonjour à tous,
je rencontre une difficulté sur une somme. Voila un exemple je possède une table avec un id, une valeur, un compteur il faudrait que je puisse faire la somme groupé sur cet ID, mais des valeur inférieur ou égale au compteur. comme suit. id val cpt 1 10 2 1 15 3 1 20 1 Cherche à faire ceci. id val cpt result 1 20 1 20 1 10 2 30 1 15 3 45 En fait pouvoir faire une somme sur l'id mais des valeurs inférieur ou égal au ptit compteur (cpt). je n'ai réussi qu'en faisant une table liée mais du coup les temps s'envole et j'aime pas trop cette solution. je suis sql 2008 y'a t'il une fonction du style rownumber mais qui me les additionne ? Merci par avance. Ch. |
|
|
00
|
|
|
#2 | ||
|
Membre Expert
![]() Yannick Ingénieur Etudes & Developpements Inscription : février 2006 Messages : 1 125 ![]() |
Peut etre qu'avec une auto jointure, vous pourrez recuperer ce qu'il vous faut, du genre
Code :
Bon courage
__________________
Dans la connaissance du monde, ceux qui ne savent rien en savent toujours autant que ceux qui n'en savent pas plus qu'eux. (Pierre Dac) |
||
|
|
00
|
|
|
#3 |
|
Membre Expert
![]() Sylvain DevidalChef de projets Générix Inscription : février 2010 Messages : 1 062 ![]() |
je pense qu'il faut aussi rajouter un a.id = b.id dans le where.
|
|
|
00
|
|
|
#4 |
|
Invité de passage
![]() Administrateur de base de données Inscription : octobre 2002 Messages : 31 ![]() |
bonjour,
c'est la solution que j'utilise aujourd'hui mais elle est très loin d’être optimale coté performance. Sachant que j'en ai ~290000 ça me prends plus d'une heure. je cherche donc a savoir si la méthode est bonne ? et/ou si il n'existe pas de fonction qui pourrait faire le travail bien plus rapidement. |
|
|
00
|
|
|
#5 |
|
Membre Expert
![]() Yannick Ingénieur Etudes & Developpements Inscription : février 2006 Messages : 1 125 ![]() |
plus d'une heure ? avec des indexes sur le compteur ?
__________________
Dans la connaissance du monde, ceux qui ne savent rien en savent toujours autant que ceux qui n'en savent pas plus qu'eux. (Pierre Dac) |
|
|
00
|
|
|
#6 |
|
Invité de passage
![]() Administrateur de base de données Inscription : octobre 2002 Messages : 31 ![]() |
oui, en meme temps mon traitement est un peu plus complexe.
il y a 2 identifiant et le processus fait 2 sommes qu'il divise. mais pour la compréhension du problème c'est exactement ça. bon j'avoue aussi que 290000 avec cette méthode ça doit faire beaucoup de requête. donc je cherche une autre piste. |
|
|
00
|
|
|
#7 |
|
Membre Expert
![]() Yannick Ingénieur Etudes & Developpements Inscription : février 2006 Messages : 1 125 ![]() |
il serait interessant cependant d'analyser le plan d'execution.
__________________
Dans la connaissance du monde, ceux qui ne savent rien en savent toujours autant que ceux qui n'en savent pas plus qu'eux. (Pierre Dac) |
|
|
00
|
|
|
#8 | |||
|
Membre Expert
![]() |
Citation:
Code :
Pouvez vous poster, comme le demande si justement Yanika_bzh le plan d’exécution ainsi que les DDL de votre table?
__________________
Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir. |
|||
|
|
00
|
|
|
#9 | ||||
|
Invité de passage
![]() Administrateur de base de données Inscription : octobre 2002 Messages : 31 ![]() |
Ok je vais essayer de vous donner ça !
DDL de la table en question Code :
Alors phénomène intéressante la boucle de 1h30 c'est du à des valeurs trop large. toutefois c'est juste pas normal quand même. donc voici la requête. Code :
|
||||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com