首页 > 解决方案 > 为什么 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,但我认为这个问题应该适用于任何支持这些功能的数据库。

标签: sqlgoogle-bigqueryanalytic-functions

解决方案


推荐阅读