秀逗原子猫� 2020-07-23 12:13 采纳率: 50%
浏览 195
已结题

谁能告诉我这是什么sql骚操作?????

最近在做TPCDS测试,可以说是分析型数据库性能测试的最权威标准了。
TPCDS标准测试语句有一个sql是这么写的。

我把它的内容简化一下来看:

我有一张这样的表:

图片说明

sql是这么写的:

select store , 
       product , 
       sum(sum(price)) over(partition by product) as price
from tmp2
group by store , product 
order by store , product;

最后的结果:

图片说明

我发现这个sql语句实际的效果是用over函数之后,再去重。

over:

select store , 
       product , 
       sum(price) over(partition by product) as price
from tmp 
order by store , product;

得到:

图片说明

distinct + over:

select distinct store , 
       product , 
       price 
from 
    (
    select store , 
           product , 
           sum(price) over(partition by product) as price
    from tmp2 
    ) as t
order by store , product;

得到:

图片说明

黑人问号脸:

用distinct写不香吗?

为什么写了两层sum()之后,over函数就可以和groupby一起用了??

为什么第二层sum()并不是求和,而是起到了去重的效果???

  • 写回答

3条回答 默认 最新

  • Zzzz_zzzz_zz 2020-12-21 15:35
    关注
    评论

报告相同问题?

悬赏问题

  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料