2013-01-02 3 views
0

que je fais actuellement cette requête:Obtenir le « [Err] 1111 - Utilisation incorrecte de la fonction de groupe » d'erreur

SELECT Date_Format(M.Signupdate,"%Y-%m") as YearMonth, 
SUM(IF(Count(H.Nr) >= 0,1,0)) , 
SUM(IF(Count(H.Nr) >= 1,1,0)) , 
SUM(IF(Count(H.Nr) >= 2,1,0)) , 
SUM(IF(Count(H.Nr) >= 3,1,0)) 
FROM people M 
INNER JOIN History H ON H.login = M.Login 
WHERE 
M.Masteraccount = "" AND 
M.logincount > 5 AND 
DATEDIFF(M.lastlogin,M.Signupdate) >= 3 AND 
DATEDIFF(H.EntryDate,M.Signupdate) <= 151 
GROUP BY YearMonth ORDER BY YearMonth ; 

Cependant, je continue à obtenir la « [Err] 1111 - Utilisation incorrecte de la fonction de groupe " Erreur. Si j'enlève les SUM, ça fonctionne très bien. Est-ce que quelqu'un a la réponse pour moi s'il vous plaît?

Répondre

1

Vous ne pouvez pas utiliser l'alias dans GROUP BY. Vous devrez placer le Date_Format(M.Signupdate,"%Y-%m") dans le GROUP BY pour que cela fonctionne. Aussi, vous ne pouvez pas imbriquer les fonctions globales de sorte que vous aurez besoin d'utiliser une sous-requête pour obtenir le count, puis utilisez sum:

select YearMonth, 
    SUM(IF(CountNR >= 0,1,0)) , 
    SUM(IF(CountNR >= 1,1,0)) , 
    SUM(IF(CountNR >= 2,1,0)) , 
    SUM(IF(CountNR >= 3,1,0)) 
from 
(
    SELECT Date_Format(M.Signupdate,"%Y-%m") as YearMonth, 
     Count(H.Nr) CountNR 
    FROM people M 
    INNER JOIN History H 
     ON H.login = M.Login 
    WHERE M.Masteraccount = "" AND 
     M.logincount > 5 AND 
     DATEDIFF(M.lastlogin,M.Signupdate) >= 3 AND 
     DATEDIFF(H.EntryDate,M.Signupdate) <= 151 
    GROUP BY Date_Format(M.Signupdate,"%Y-%m") 
) src 
GROUP BY YearMonth 
ORDER BY YearMonth; 
+0

Merci pour votre réponse rapide! Cependant, cette requête me remet toujours la même erreur :( –

+0

@VincentJames voir ma modification, j'ai raté les fonctions d'agrégat imbriquées – Taryn

+0

Merci encore. "DATEDIFF (H.EntryDate, M.Signupdate) <= 151" besoins être dans la section HAVING, car il utilise une autre table, donc ne peut pas être dans la sous-requête? –

Questions connexes