sql - 为什么 ORDER 本身会改变分析函数中的结果?
问题描述
在以下查询中:
with SalesX as (
select 'Office Supplies' Category , 2014 Year,22593.42 Profit UNION all
select 'Technology', 2014, 21492.83 UNION all
select 'Furniture', 2014, 5457.73 UNION all
select 'Office Supplies', 2015, 25099.53 UNION all
select 'Technology', 2015, 33503.87 UNION all
select 'Furniture', 2015, 50000.00 UNION all
select 'Office Supplies', 2016, 35061.23 UNION all
select 'Technology', 2016, 39773.99 UNION all
select 'Furniture', 2016, 6959.95
) select Category, Year, Profit,
SUM(Profit) OVER (),
SUM(Profit) OVER (ORDER BY Category, Year)
from SalesX order by category, year
我们看到ORDER BY <field>
在查询中只使用 a 会极大地改变结果(从一个恒定的总计到一个运行总计):
ORDER
我的问题是改变分析函数的工作方式背后的原因是什么。我知道确实如此,但我更感兴趣的是它为什么或如何做到这一点(例如,法线ORDER BY
不会改变结果,只有在它之后应用了限制之类的东西)。请注意这里的后端是用于测试的 BigQuery,但我认为这个问题应该适用于任何支持这些功能的数据库。
解决方案
推荐阅读
- php - 使用 get_posts 获取最接近今天日期的产品,日期元 - 不起作用
- kotlin - 从 REST API 消费数据时,生成数据类还是简单的普通类更好?
- jpa-2.1 - 具有两个相关辅助表的表
- terminal - 使用终端从列表中创建文件夹和文件夹名称
- opengl - OpenGL - 绘制由一组点组成的非平面 3D 多边形
- angular - 在 Ionic 中登录时打开不同的页面
- elasticsearch - Kibana 6 - 仪表板/搜索的有限大小结果
- go - golang defer 语句是在return 语句之前还是之后执行?
- c# - MVC 局部视图内部带有计时器的局部视图
- c++ - 使用 curlpp 同步 HTTPS 请求