【发布时间】:2022-01-08 11:33:18
【问题描述】:
我有一张桌子:
fname|o_details| cost
eva |coat|125
eva |coat|225
eva |shirt|60
eva |slipper|20
farida|coat|100
farida|shirt|50
farida|shoes|80
farida|skirt|30
henry|shoes|80
我想了解以下之间的区别:
sum(cost) over(partition by fname order by fname desc) as part_by_fname,
sum(cost) over(partition by fname order by fname,o_details desc) as part_by_both
我的理解是 order by in over 子句只是改变了顺序,我们根据分区应用窗口聚合函数。但令我惊讶的是,我得到了附加的输出。 .
请解释这两个over子句背后的逻辑以及它们的不同之处
【问题讨论】:
-
两者都是定义组(分区)内的运行总计 - 第一个只有一个组“fname”,因此 sum 给出了这一组的总数,顺序是多余的;第二个是由 o_details 定义的 3 个组的运行总数,按字母顺序降序排列,因此您有 20、(20+60) 然后是 (20+60+350)
-
顺便说一句,我注意到您尚未接受对您之前问题的任何答案,这是有原因的吗?
-
@Stu:感谢您的回答,“尚未接受答案”是什么意思?我看不到任何接受或拒绝回答的弹出窗口。
-
@stu:我明白你的意思。已接受答案。
标签: sql postgresql window-functions