sql学习笔记之(3)row_number()函数详解

row_num()语法:

 row_number() over(partition by location order by pm2_5 desc) as num

根据col1分组,然后根据col2进行排序,排序的序号为index

实例

使用数据为三城市近三天pm2.5数值表:

现在想要求每个城市这三天pm2.5数值最高的那一天,逻辑为首先对location进行分组,然后对每一组的PM2.5数值进行降序排序,然后取每一组的第一条数据,即为近三天最高的数据。

我们来分步看实际结果

1、首先加入row_number()

sql语句为:

select a.*,
       row_number() over(partition by location order by pm2_5 desc) as num
  from test_having_pm25 a

结果:

发现加入row_number()函数后,实际是在原先的表最后加入了一列序号num

2、接下来加入条件筛选,选择num=1的数据,即为所求的数据

sql语句为:

select *
  from (select day,
               pm2_5,
               location,
               row_number() over(partition by location order by pm2_5 desc) as num
          from test_having_pm25) a
 where a.num = 1

结果为:

总结

row_number()实际功能为对分组后的数据进行排序,从而取特定序号的数据。

 

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值