Row_Number()over(order by....) a

2020-03-19  本文已影响0人  _Irving

1、Row_Number()over(order by....) as去重

select orderid,foodName,price ,ROW_NUMBER() OVER(PARTITION BY orderid order by price desc) from Table_3;(这样使用不会去重)

数据表先按照orderid 分组,在分组内按照price降序排序

SELECT s.* FROM (SELECT orderid,foodName,price ,ROW_NUMBER() OVER( PARTITION BY orderid ORDER BY price DESC)as rowid FROM Table_3 )s WHERE s.rowid= 1;(这样使用用去重的效果);
由查询结果可知,相同orderid 的只保留了rowid=1 的记录,其他的都被过滤掉了,从而达到了对orderid 去重处理

2、Rank() over(partition by col1 order by col2)跳跃排序
select *, rank() over(partition by orderid order by price desc) from Table_3;

3、DENSE_RANK() OVER(PARTITION BY COL1 ORDER BY COL2)连续排序
select *, dense_rank() over(partition by orderid order by price desc) from Table_3;

4、sum() over (partition by col1 order by col2)累加求和

上一篇 下一篇

猜你喜欢

热点阅读