Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1589 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Faire un group by sur un case ou un if

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Faire un group by sur un case ou un if

n°1167575
betsamee
Asterisk Zeperyl
Posté le 02-08-2005 à 10:08:41  profilanswer
 

Bonjour
J'aimerais realiser une requete de ce type mais cela me retourne une erreur (Can't group on 'Tranche') j'utilises MySQL
 

Code :
  1. select CASE0
  2.        WHEN SUM(A.Prix) <= 10 THEN 'inferieur a 10'
  3.        WHEN SUM(A.Prix) > 10 AND SUM(A.Prix)<=20 THEN 'entre 10 et 20'
  4.        ELSE 'superieur a 20'
  5.        END
  6.        as Tranche , count(*) as NombreClients
  7. FROM Table A
  8. group by Tranche


 
mais ca marche pas  :cry:  
 
et meme la version crade rend le meme resultat:
 

Code :
  1. select
  2.        if(SUM(A.Prix) <= 10,'inferieur a 10',
  3.           if(SUM(A.Prix) > 10 AND SUM(A.Prix)<=20,'entre 10 et 20','superieur a 20'))
  4.        as Tranche , count(*) as NombreClients
  5. FROM Table A
  6. group by Tranche


Message édité par betsamee le 02-08-2005 à 10:09:17
mood
Publicité
Posté le 02-08-2005 à 10:08:41  profilanswer
 

n°1167603
Beegee
Posté le 02-08-2005 à 10:34:39  profilanswer
 

Et ça ?
 
select CASE0  
       WHEN SUM(A.Prix) <= 10 THEN 'inferieur a 10'  
       WHEN SUM(A.Prix) > 10 AND SUM(A.Prix)<=20 THEN 'entre 10 et 20'  
       ELSE 'superieur a 20'  
       END  
       as Tranche , count(*) as NombreClients  
FROM Table A  
group by CASE0  
       WHEN SUM(A.Prix) <= 10 THEN 'inferieur a 10'  
       WHEN SUM(A.Prix) > 10 AND SUM(A.Prix)<=20 THEN 'entre 10 et 20'  
       ELSE 'superieur a 20'  
       END

n°1167632
betsamee
Asterisk Zeperyl
Posté le 02-08-2005 à 10:57:14  profilanswer
 

j'avais essaye ca marche aps non plus

n°1167732
betsamee
Asterisk Zeperyl
Posté le 02-08-2005 à 12:00:34  profilanswer
 

J'ai contourne le pb et ma foi ca marche bien
mais je suis tjrs interesse par une reponse

Code :
  1. SELECT 'inferieur a 10',COUNT(*) AS nbclients
  2. FROM (
  3. SELECT A.Nom,SUM(A.Prix) AS CA
  4. FROM Table A
  5. GROUP by A.Nom
  6. HAVING SUM(A.Prix) <=10
  7. ) B
  8. UNION
  9. SELECT 'entre 10 et 20',COUNT(*) AS nbclients
  10. FROM (
  11. SELECT A.Nom,SUM(A.Prix) AS CA
  12. FROM Table A
  13. GROUP by A.Nom
  14. HAVING SUM(A.Prix) >10 AND SUM(A.Prix)<=20
  15. ) B


 
EDIT : BLAGUE
C'est ce qui s'appelle une requete aux petits unions


Message édité par betsamee le 02-08-2005 à 13:03:07
n°1167781
Arjuna
Aircraft Ident.: F-MBSD
Posté le 02-08-2005 à 12:32:34  profilanswer
 

c'est quoi le "sum()" ?

n°1167787
betsamee
Asterisk Zeperyl
Posté le 02-08-2005 à 12:37:38  profilanswer
 

ben la somme

n°1167795
Arjuna
Aircraft Ident.: F-MBSD
Posté le 02-08-2005 à 12:51:43  profilanswer
 

ouais et il est groupé par quoi ?

n°1167802
betsamee
Asterisk Zeperyl
Posté le 02-08-2005 à 12:58:28  profilanswer
 

Par A.Nom
mais en fait c'est pas ma vraie requete est la retranscripton est pas super
le regroupement se fait en fait sur un champ d'une table liee par une jointure a A
 
Edit : totographe


Message édité par betsamee le 02-08-2005 à 13:03:25

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Faire un group by sur un case ou un if

 

Sujets relatifs
oracle group bycase à cocher obligatoire
[php] case "selected"BOUCLE pour Macro Excel : case:nom prenom ---> case:nom case:prenom
requete group by ?Probleme avec GROUP BY
If imbriqués, Case of ou liste pour une grosse sélection ?Group By & Order By Oracle
excel case:nom prenom ---> case:nom case:prenomVerifier si un user est membre d'un group AD
Plus de sujets relatifs à : Faire un group by sur un case ou un if


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR