mysql 取并列前10,不去重

一、问题

在 基于jira的缺陷自动化报表分析 (四)按人员统计缺陷情况 一文中,我们建立了一张表统计开发人员的缺陷情况。

现在,我们需要根据这张表查询到单日引入缺陷数量前十的人员,如果引入数量一样多,不去重,全部查询出来。

order by、limit 10 看上去很简单,一顿操作,结果却只有前5的引入数量,因为有重复的

 

二、解决

1、先找到排名第10的引入数量是多少(按数量分组后 limit 9,1 查到第10的引入数量),然后查询大于等于该数量的开发人员和引入数量

SELECT b.assign_name,b.introduce_amount 
FROM daily_assign_bug b 
WHERE b.introduce_amount >=
(
        SELECT introduce_amount 
        FROM daily_assign_bug 
        GROUP BY introduce_amount 
        ORDER BY introduce_amount DESC 
        LIMIT 9,1
) ORDER BY b.introduce_amount DESC
;

此时,我们发现前10的数量的人有65个了

 

(2)查到前10的所有引入数量,然后对原始表用 in 过滤

SELECT b.assign_name,b.introduce_amount 
FROM daily_assign_bug b 
WHERE b.introduce_amount IN
(
        SELECT introduce_amount 
        FROM daily_assign_bug 
        GROUP BY introduce_amount 
        ORDER BY introduce_amount 
        DESC LIMIT 10
) ORDER BY b.introduce_amount DESC
;

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值