4

こんにちは、私は次の表を持っています。各月の接続の最大数 (カウント (*)) を選択したいと思います。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つあるシナリオがあるかもしれませんが、月/年ごとに最大数の行のみを返したいのですが...内部の選択ステートメントなどが必要ですか?

4

1 に答える 1

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 ;
于 2013-09-30T23:13:41.497 に答える