美文网首页
实现分组选择

实现分组选择

作者: 黑曼巴yk | 来源:发表于2020-01-12 19:04 被阅读0次

前言

如果我们的记录可以划分为一定的分类,每个分类中选取一定量的数据。这样就称为分组选择。
如果只是选择最大或者最小的记录使用聚合函数max,min就可以得到,但是如果想要获取多个值?应该如何处理

方案

比如我们想要获取所有文章分类中,阅读量最多的前2条记录
如果使用开窗函数可以有下面的解决

with tmp as (
  select a.timestr, a.kill. row_number() over(partition by a.userid order by a.kill) cnt
  from t_kill a
) select * from tmp where cnt <= 2;
使用join语句处理

由于mysql中不支持开窗函数

select t2.userid, t2.timestr, t2.kill, 
(select count(*) from t_kill t1 where t1.userid=t2.userid and t1.kill>=t2.kill) as cnt
from t_kill t2 group by t2.userid, t2.timestr, t2.kill

相关文章

网友评论

      本文标题:实现分组选择

      本文链接:https://www.haomeiwen.com/subject/vplwactx.html