SQL:如何在分组依据中使用sum

SELECT  idteam,
        job,
        price,
        COUNT('X') as INFORMS,
        SUM(COUNT('X') * price) as TOTAL
FROM REP 
JOIN COSTS ON (job = categ AND to_number(to_char(REP,'YYYY')) = year)
GROUP BY idteam, job, price, TOTAL
ORDER BY IDTEAM;

我不知道为什么要在GROUP BY中写入TOTAL,并且sql向我发送错误消息。标识符无效。

我不知道该如何解决。

谢谢。

虚拟SQL

“ TOTAL”列是SUM(COUNT('X')* price)的别名。它不能用作GROUP BY子句中的列标识符。您必须说出GROUP BY SUM(COUNT('X')* price),因为在分组时“ TOTAL”未知/不是列。使用GROUPING后,可以在HAVING子句中引用“ TOTAL”。无论如何,您使用的SQL版本/类型不允许这样做。

另外,为什么要计数“ X”?X是固定值,并且不依赖于您的任何列。如果要计数每一行,只需使用Count(1)或Count(*)。另外,您不需要总计COUNT。COUNT已被求和。

您应该发布REP和COSTS的结构。链接的图像没有足够的信息来支持您编写的查询。

select
    idteam,
    -- job, /* not selected since it would need to be grouped*/
    sum(price) as 'theSUM'
from REP
join COSTS
    on REP.categ = COSTS.job
    and COSTS.year = 2016
group by idteam
order by idteam

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章