我正在使用SQL查询,我有一个包含月份和价格的表格,我正在执行移动平均线。我的代码如下:
SELECT month, prices,
round(AVG(SUM(prices)) OVER
(ORDER BY month ROWS BETWEEN 1 PRECEDING AND CURRENT ROW),2)
AS MA
FROM tblma
GROUP BY month
ORDER BY month;
虽然对我而言似乎显然我犯了一个我没看到的错误。 我的重新调整错误是:00979。00000 - “不是GROUP BY表达式”
我的原始数据格式如下:
ID |月| PRICE
1 | 11 | 20.36
2 | 12 | 11.05
基本上我想在右边添加移动平均线。
答案 0 :(得分:3)
这可能是你想要的,移动平均线超过了汇总价格:
SELECT month, SUM(prices),
round(AVG(SUM(prices)) OVER
(ORDER BY month ROWS BETWEEN 1 PRECEDING AND CURRENT ROW),2)
AS MA
FROM tblma
GROUP BY month
ORDER BY month;
答案 1 :(得分:1)
问题在于您尝试选择prices
但没有聚合表达式,或按价格分组。如果您删除prices
,只需执行SELECT month, round(AVG(SUM(prices))
即会返回一些内容。您无法选择prices
的原因是,如果您在同一个月内有多个价格,那么您尚未指定如何处理此问题。
此外,round(AVG(SUM))
只会返回值的舍入SUM
。它将首先对所有内容求和,然后取该数字的平均值,这将是数字本身。