MySQL语句 - 从组中选择最大值

时间:2013-09-30 22:30:55

标签: mysql sql count max grouping

您好我有下表,我想选择每个月插入的最大值(计数(*))。 sqlfiddle.com/#!2/13036/1

select * from broadcast

profile, plugged, company, tstamp
1,       2,       1,       2013-10-01 08:20:00
1,       3,       1,       2013-10-01 08:20:00
2,       1,       1,       2013-10-01 08:20:00
2,       3,       1,       2013-10-01 08:20:00
3,       1,       1,       2013-10-01 08:20:00
3,       1,       1,       2013-09-01 08:20:00

所以,如果我做了类似以下的事情:

    select plugged, 
           count(*), 
           extract(month from tstamp), 
           extract(year from tstamp) 
      from broadcast 
     where company=1
  group by plugged, 
           extract(month from tstamp), 
           extract(year from tstamp)
  order by count(*) desc;

输出:

plugged, count(*), extract(month from tstamp), extract(year from tstamp)
3,       2,        10,                         2013
1,       2,        10,                         2013
2,       1,        10,                         2013
1,       1,        9,                          2013

期望的输出:

plugged, count(*), extract(month from tstamp), extract(year from tstamp)
3,       2,        10,                         2013
1,       2,        10,                         2013
1,       1,        9,                          2013

这是正确的...但我只想要max(count(*))(例如在这种情况下只有第一行)。可能存在2行具有最大计数的情况,但是对于每个MONTH / YEAR,我只想返回最大计数行...我是否需要内部选择语句或什么?

1 个答案:

答案 0 :(得分:0)

试试这个

 select plugged, max(counts) counts, month , year
 from 
    (select plugged ,count(*) as counts ,extract(month from tstamp) month , extract(year from tstamp) year from broadcast  where company=1 
      group by plugged,month ,year order by counts desc  ) as x ;