Faire un group by sur un case ou un if

Faire un group by sur un case ou un if - SQL/NoSQL - Programmation

Marsh Posté le 02-08-2005 à 10:08:41    

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
Reply

Marsh Posté le 02-08-2005 à 10:08:41   

Reply

Marsh Posté le 02-08-2005 à 10:34:39    

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

Reply

Marsh Posté le 02-08-2005 à 10:57:14    

j'avais essaye ca marche aps non plus

Reply

Marsh Posté le 02-08-2005 à 12:00:34    

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
Reply

Marsh Posté le 02-08-2005 à 12:32:34    

c'est quoi le "sum()" ?

Reply

Marsh Posté le 02-08-2005 à 12:37:38    

ben la somme

Reply

Marsh Posté le 02-08-2005 à 12:51:43    

ouais et il est groupé par quoi ?

Reply

Marsh Posté le 02-08-2005 à 12:58:28    

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
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed