2016-01-20 2 views
1

Je reçois l'erreur:Mysql 'err 1111 Utilisation incorrecte de la fonction de groupe'

"[Err] 1111 - Invalid use of group function" for this query:

SELECT u.date, u.des_channel, u.des_type, 
count(distinct(u.id)), 
sum(if(u.date=bp.date,sum(bp.o_outcome),0), 
sum(if(u.date=bp.date,1,0)) as P_n, 
count(distinct(if(u.date=bp.date,bp.user_id,0))) 
FROM mayadata.users u 
left join mayadata.billing_pays bp 
on u.id=bp.user_id 
WHERE (u.date)=5 and year(u.date)=2011 and truncate(monthtimestampdiff(hour,u.datetime,bp.datetime)/24,0)<7 
GROUP BY u.date, u.des_channel, u.des_type 
+0

Si je copie votre déclaration et essaie de l'exécuter, j'ai obtenu une syntaxerror – Jens

+0

Mon mauvais. Cela correct: SELECT u.date, u.des_channel, u.des_type, count (distinct (u.id)), sum (si (u.date = bp.date, sum (bp.o_outcome), 0)), sum (si (u.date = bp.date, 1,0)) en tant que P_n, count (distinct (if (u.date = bp.date, bp.user_id, 0))) FROM mayadata. users u left rejoindre mayadata.billing_pays bp on u.id = bp.user_id OERE (u.date) = 5 et année (u.date) = 2011 et truncate (monthtimestampdiff (heure, u.datetime, bp.datetime)/24,0) <7 GROUP BY u.date, u.des_channel, u.des_type –

+2

Veuillez éditer votre question. – Jens

Répondre

0

Vous devez utiliser HAVING

SELECT u.date, u.des_channel, u.des_type, 
COUNT(DISTINCT(u.id)) 
SUM(if(u.date = bp.date, SUM(bp.o_outcome),0)) SUM(if(u.date = bp.date,1,0)) AS P_n, 
COUNT(DISTINCT(if(u.date = bp.date, bp.user_id,0))) 
FROM mayadata.users u 
LEFT JOIN mayadata.billing_pays bp ON u.id = bp.user_id 
GROUP BY u.date, u.des_channel, u.des_type 
HAVING (u.date) = 5 
AND year(u.date) = 2011 
AND truncate(monthtimestampdiff(hour,u.datetime,bp.datetime)/24,0)<7 
+0

ont même erreur :( –

0

L'erreur est causée par l'utilisation de un SUM dans un SUM dans

sum(if(u.date=bp.date,sum(bp.o_outcome),0) 

qui est illégal