Résumer plusieurs lignes en une seule - SQL/NoSQL - Programmation
Marsh Posté le 02-06-2014 à 17:34:48
Je pars de l'hypothèse que ta table a la structure suivante :
- id
- col1
- col2
- col3
et que la série est id/10 arrondi à l'unité.
En jouant avec une requête imbriqué (pour le calcul des valeurs/group by) plus un case/when pour le formattage corresponds au besoin
Je pense qu'une requête de type
Code :
|
doit faire l'affaire non ?
Marsh Posté le 03-06-2014 à 02:01:06
Bonjour dreameddeath,
Avant tout je te remercie de cette réponse rapide mais surtout de la requête qui s'est exécutée sans erreur du premier coup.
Mais je constate qu'elle me donne le même nombre de lignes que dans la table test initial . Comme si les group by n'a pas fonctionné.
Pour rappel
Après le group by on voudrait que les lignes multiple soient supprimées et ne laisser que les lignes ne se répètant pas.
Merci infiniment
Marsh Posté le 03-06-2014 à 08:08:44
Si le group by n'a pas fonctionné, c'est que les décimaux ne sont pas "égaux", certainement lié à un pb d'arrondi...
Tu tires d'où tes données ?
Marsh Posté le 03-06-2014 à 13:54:17
J'aurais dit de faire un distinct ou plus rapide, un group by, aussi
Marsh Posté le 03-06-2014 à 14:26:21
C'est pas tout à fait un distinct, car visiblement il faut faire un "rapprochement" par série (sans le dernier digit de la colonne index).
D'où mon group by "serie", que j'ai testé chez moi "bêtement" (jeu de donnée simulé à la mimine) et ça marche.
Donc je ne vois que peu d'explications :
- le moteur de base de donnée
- la structure de la table (le type des colonne)
- le jeu de donnée (par exemple un décimal tronqué à l'affichage mais qui en base est plus "précis" )
@maestro1303 :
- pourrais-tu me dire quelle est ton SGBD
- la structure de BDD (y compris la précision des colonnes numériques)
Merci d'avance
Marsh Posté le 06-06-2014 à 10:45:29
select distinct(p1,p2,p3) from ma table
ou
select p1,p2,p3 from ma table group by
p1,p2,p3
la seconde solution plus rapide mais se prête pour aussi faire un count, un min, max... pour connaitre les cardinalités de tes "doublons"...
Marsh Posté le 02-06-2014 à 16:30:03
Bonjour,
J'ai une table qui contient 4 champs ;
index
p1
p2
p3
Mon objectif est de regrouper au mieux pour avoir l'information avec le moins de lignes possibles.
Voici un exemple
La série 120 serait donc remplacée par les 2 lignes suivantes:
120 0,802 0,05 0,07
1204 0,052 0,035 0,076
La série 122 serait donc remplacée par les 2 lignes suivantes:
122 0,802 0,05 0,07
1226 0,052 0,035 0,076
La série 123 serait donc remplacée par les 2 lignes suivantes:
123 0,802 0,05 0,07
1236 0,052 1 0,076
Mais la série 124 serait donc remplacée par les 4 lignes suivantes:
124 0,802 0,05 0,07
1242 0,9653 0,398 0,66
1246 0,823729 0,8495 0,885
1249 0,052 0,035 0,076
On n'y gagne qu'une seule ligne qu'on résume, les autres lignes sont laissées avec leurs détails!
La série 125 serait donc remplacée par les 2 lignes suivantes:
1250 0,052 0,035 0,076
125 0,802 0,05 0,07
Cet exemple résume la philosophie des regroupements que je dois faire.
Merci d'avance.