mysql8 分组排序取第一或者前几

一、基础数据

基本数据: 公司id, 数量, 创建时间

3条数据中, 2个公司, 不同的数量和时间

分组找到公司最新的数量

mysql8 有别于5.6, 5.7, 5.x版本自行百度.

MySQL 8 引入了一个 rank() 函数,可以更简便的实现排行的功能. 

二、实例展示

具体使用:

select t.company_id, t.quantity, 
			RANK() OVER(PARTITION BY 
					t.company_id ORDER BY create_time desc
			)  ranks
			from hd_service_order_item t

得到, 已经能看到排行了

三、结果展示

加上子查询,找到第一: 最后的条件可以随便改, <=3, 可以取前三 

select * from (
			select t.company_id, t.quantity, 
			RANK() OVER(PARTITION BY 
					t.company_id ORDER BY create_time desc
			)  ranks
			from hd_service_order_item t
		)f where f.ranks = 1

结果展示:

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值