2

フィールドを持つテーブル M_DAILY があります

PS_DATE date,
tp int,
ep int,
mp int,

function nvl(x,y)null でない場合は x を返し、x が null の場合は y を返すユーザー定義の作業バージョンを持っている

私のMySQLクエリは-

select sum(avg(case date_format(PS_DATE,'%Y') when '2005' then nvl(tp,0) else 0 end))tp, sum(avg(case date_format(PS_DATE,'%Y') when '2005' then nvl(ep,0) else 0 end)) ep, sum(avg(case date_format(PS_DATE,'%Y') when '2005' then nvl(mp,0) else 0 end)) mp
from M_DAILY
where PS_DATE >= date ('2005-01-01') and PS_DATE <= date ('2005-12-31')
group by PS_DATE;

次のエラーが表示されます

#1111 - Invalid use of group function in mysql

助けてください。

4

1 に答える 1

1

SUM()、COUNT()、AVG()、MIN()、MAX() などは、SELECT リストのすべての列で使用しない限り、GROUP BY を指定する必要がある集計関数です。

GROUP BY句を削除

これを試して

SELECT SUM(tp),SUM(ep),SUM(mp) FROM
(
    SELECT Avg(case date_format(PS_DATE,'%Y') when '2005' then nvl(tp,0) else 0 end) tp,   
           Avg(case date_format(PS_DATE,'%Y') when '2005' then nvl(ep,0) else 0 end) ep, 
           Avg(case date_format(PS_DATE,'%Y') when '2005' then nvl(mp,0) else 0 end) mp   
    FROM M_DAILY 
    WHERE PS_DATE >= date ('2005-01-01') and PS_DATE <= date ('2005-12-31');
) As T
于 2014-04-03T05:29:47.217 に答える