一、问题
在 基于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
;