Bonjour,
J'ai une table du type
ID | id_client | valeur
et je souhaiterai obtenir quelquechose du type
ID | id_client | nbre de valeurs entre 1 et 2 | nbre de valeurs entre 3 et 4
Comment puis je faire ceci ?
Merci d'avance.
Bonjour,
J'ai une table du type
ID | id_client | valeur
et je souhaiterai obtenir quelquechose du type
ID | id_client | nbre de valeurs entre 1 et 2 | nbre de valeurs entre 3 et 4
Comment puis je faire ceci ?
Merci d'avance.
Bonjour,
Avec union :
Bien sur si la version de MySQL accepte les sous-requêtes.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 select ID, id_client, sum(val1_2), sum(val3_4) from (select ID, id_client, count(valeur) as val1_2, 0 as val3_4 <div style="margin-left:40px">from MaTable where valeur between 1 and 2 union select ID, id_client, 0 as val1_2, count(valeur) as val3_4 from MaTable where valeur between 3 and 4)</div>group by ID, id_client
En ajoutant des GROUP BY, ça sera plus efficace
Envoyé par TheRussian
Modérateur Langage SQL
Règles du forum Langage SQL à lire par tous,
N'hésitez pas à consulter les cours SQL
N'oubliez pas le bouton
et pensez aux balises [code]
Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.
Merci c'est parfait
PS: j'avais entendu dire que le union c'était pas bien et que tout ce qui est fait avec peut etre fait autrement. C'est vrai ou c'est juste une rumeur urbaine ?
En tout cas ici tu peux faire un truc comme :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 SELECT Id, id_client, sum(case when valeur between 1 and 2 then 1 else 0 end), sum(case when valeur between 3 and 4 then 1 else 0 end) FROM MaTable WHERE valeur between 1 and 4 GROUP BY ID, id_client
Et je supose qu'en terme de performances ta proposition est mieux ?¿?
On ne parcours la table qu'une seule fois, alors qu'a priori dans le cas d'une union elle va être parcouru 2 fois...Envoyé par Dr_GonZO
Le mieux c'est de tester.
Partager