分析功能

时间:2019-08-08 00:42:33

标签: sql

我正在寻找一种实现“ Item_type”的有效方法,该方法通过对“ Type”进行分区来获取不同乘积的总和。

Product no. Item    Type    Item_type
Product A   11  Type 1  24
Product B   5   Type 1  24
Product B   5   Type 1  24
Product C   8   Type 1  24
Product C   8   Type 1  24
Product A   11  Type 2  20
Product D   9   Type 2  20

1 个答案:

答案 0 :(得分:0)

基本上,您需要sum(distinct)。我认为这不明智;它通常说明了如何生成数据的问题。

最好为总和确定一个特定的行,我们可以使用row_number()来做到这一点:

select . . .,
       sum(case when seqnum = 1 then item_no else 0 end) as item_type
from (select t.*, 
             row_number() over (partition by product, type order by product) as seqnum
      from t
     ) t