0

我正在学习如何使用窗口函数并遇到了这个 SQL 语句。

select
    ...
    sum(ss_ext_sales_price) * 100 / sum(sum(ss_ext_sales_price)) over (partition by i_class) as revenueratio

from
    ...
where
    ...
group by
    i_item_id,
    i_item_desc,
    i_category,
    i_class,
    i_current_price

我的问题是i_class分区是否适用于所有 3 个SUM函数,或者其中一些函数是否是使用group by分组计算的。

4

1 回答 1

1

窗口函数和聚合函数。. . 当您第一次开始一起使用它们时,它们看起来很尴尬。partitioning 子句和 first 没有关系sum(),我们只看分母:

 sum( sum(ss_ext_sales_price) ) over (partition by i_class) as revenueratio

over适用于第一个sum()。这是计算 sum 列的总和。. . 也就是总量。我认为它帮助我打破了这一点:

 sum(ss_ext_sales_price)
 sum( sum(ss_ext_sales_price) ) over (partition by i_class) as revenueratio

实际上,不允许将窗口函数作为聚合函数的参数:

 sum( sum(ss_ext_sales_price) over (partition by i_class) ) as revenueratio
于 2016-05-05T16:40:31.620 回答