我开始学习带有聚合函数的PARTITION BY方法,但是我不明白为什么我要在此查询中使用ORDER BY。 我想对“标准纸”上每年的销售总额进行总计 这是我的代码:
SELECT standard_amt_usd,
DATE_TRUNC('year', occurred_at) as year,
SUM(standard_amt_usd) OVER (PARTITION BY DATE_TRUNC('year', occurred_at)
ORDER BY occurred_at) AS running_total
FROM orders ;
我得到的答案是正确的,但是我仍然不明白为什么需要在这里进行ORDER BY,如果我不使用它会发生什么? 感谢您的帮助:)
答案 0 :(得分:1)
运行此查询:
SELECT standard_amt_usd,
DATE_TRUNC('year', occurred_at) as year,
SUM(standard_amt_usd) OVER (PARTITION BY DATE_TRUNC('year', occurred_at)
ORDER BY occurred_at
) AS running_total,
SUM(standard_amt_usd) OVER (PARTITION BY DATE_TRUNC('year', occurred_at)
) AS group_total
FROM orders ;
您可能会立即看到差异。 ORDER BY
表示进行“直到”这一行的求和。如果没有ORDER BY
,则所有具有相同PARTITION BY
键的行的总和都是相同的。
答案 1 :(得分:0)
ORDER BY主要有两个规则: