说到排序肯定第一个想到的就是order by
说到分组第一个想到的这是 group by ,partition by 使用的很少,少到快被忘记了,但是用的时候发现功能还是很强大的,有了它 很多复杂的功能一个sql 就搞定了
今天我就来说说 容易被忘记的 partition by , 通常和over 开窗 函数一起使用
基本语法 over(partition by col1 order by col2) 在sql2008 里这样解释的
A. 将 OVER 子句与 ROW_NUMBER 函数结合使用
表结构如下:
现在要根据不同 的支付方式排序,让支付方式相同的显示在一起,显然用group by 分组是实现不了
select ROW_NUMBER() over(partition by pay_modename order by mi_id ) as rows ,* from t_money_info
实现效果如下:
将 OVER 子句与聚合函数结合使用
select SUM(pay_money) over (partition by pay_modename ) as summoney ,* from t_money_info
实现效果:计算每一种支付方式的支付总金额