2

我有一个包含字段的表 M_DAILY

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

并定义了用户的工作版本,function nvl(x,y)如果不为空则返回 x,如果 x 为空则返回 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() 等是需要您指定 GROUP BY 的聚合函数,除非您在 SELECT 列表中的每一列上使用它们。

删除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 回答