mysql 实现分组取前N名

该SQL语句从DATA_SOURCE_TABLEA中选择记录,通过比较GROUP_FIELD相同情况下ORDER_BY_FIELD的值,找出小于B表相应记录的行。条件是这样的记录在B表中的数量不超过N。结果按GROUP_FIELD和ORDER_BY_FIELD降序排列,用于获取每个GROUP_FIELD组内的前N名记录。
摘要由CSDN通过智能技术生成

公式:

SELECT *

FROM DATA_SOURCE_TABLE AS A

WHERE (SELECT COUNT(1) FROM DATA_SOURCE_TABLE B WHERE A.GROUP_FIELD = B.GROUP_FIELD AND A.ORDER_BY_FIELD < B.ORDER_BY_FIELD) <= N

ORDER BY A.GROUP_FIELD, A.ORDER_BY_FIELD DESC

注:DATA_SOURCE_TABLE A 和 DATA_SOURCE_TABLE B 为同一个表

N为前几名

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值