Mysql前3个计数值

时间:2018-03-16 19:56:19

标签: mysql sql group-by count

我有一个返回以下值的查询:

TemplateCode    Total
    1418        35
    7419        31
    7418        31
    8325        17 
    15623       17
    4997        17

我希望所有行都有前3个Total

在我的查询中,如果我在查询中包含LIMIT 3,那么它只提供3个我不想要的内容。我不想包含LIMIT,因为计数可能会不时变化。

如何在Total上添加条件并始终获得前3个计数值

我当前的查询如下:

select TemplateCode, count(*) as Total from table group by TemplateCode
order by Total desc
limit 3

2 个答案:

答案 0 :(得分:1)

我认为这可以满足您的需求:

select t.*
from t
where t.Total >= (select distinct t2.Total
                  from t t2
                  order by t2.Total desc
                  limit 2, 1
                 );

这假定您需要第三个 distinct 值。如果您只想要第三个值,请移除distinct

答案 1 :(得分:0)

您可以在子查询上使用内部联接来获得前3个

select m.TemplateCode , m.total
from my_table m
inner join (
  select Total
  from my_table 
  order by Total Desc 
  limit 3
) t  on t.total = m.total 
 order by m.total, m.TemplateCode