0

私は現在このクエリを実行しています:

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 ;

ただし、「[Err]1111-グループ関数の無効な使用」エラーが発生し続けます。SUMを削除すると、正常に機能しています。誰かが私のために答えを持っていますか?

4

1 に答える 1

1

でエイリアスを使用することはできませんGROUP BYDate_Format(M.Signupdate,"%Y-%m")これを機能させるには、をに配置する必要がありますGROUP BY。また、集計関数をネストすることはできないため、サブクエリを使用してを取得してcountから、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;
于 2013-01-02T15:15:10.037 に答える