【发布时间】:2021-11-15 06:18:26
【问题描述】:
我有一个名为“sales”的表,其中包含两列:transaction_date 和 transaction_amount:VALUES ('2020-01-16 00:05:54.000000', '122.02'), ('2020-01-07 20:53:04.000000', '1240.00')
我想找到 2020 年 1 月每一天的 3 天移动平均线。我返回的错误是 transaction_amount 必须包含在聚合函数或 group by 中。按它分组是没有意义的,因为我只希望结果表中每天有一个条目。在我的代码中,我已经在聚合函数 SUM 中有金额,所以我不确定还有什么可以尝试的。到目前为止,这是我的查询:
SELECT EXTRACT(DAY FROM transaction_time) AS Jan20_day, SUM(transaction_amount), SUM(transaction_amount) OVER(ORDER BY EXTRACT(DAY FROM transaction_time) ROWS BETWEEN 2 PRECEDING AND CURRENT ROW) AS rolling_average FROM sales WHERE EXTRACT(MONTH FROM transaction_time)=1 AND EXTRACT(YEAR FROM transaction_time)=2020 GROUP BY EXTRACT(DAY FROM transaction_time)
关于我为什么返回以下错误的任何见解?
Query Error: error: column "transactions.transaction_amount" must appear in the GROUP BY clause or be used in an aggregate function
【问题讨论】:
-
用您正在使用的数据库标记您的问题。
-
是一个样本数据集,不在线。这里有更多值:
VALUES ('2020-01-14 22:55:37.000000', '12.18'), ('2020-01-22 00:26:12.000000', '12.67'), ('2020-01-19 02:33:10.000000', '12.22'), ('2020-01-10 10:22:14.000000', '53.60'), ('2020-01-04 01:27:34.000000', '29.13')
标签: sql group-by window-functions