2016-04-07 26 views
1

Her satırın bir değer ve tarih bilgisini içerdiği bir tablom var. Yüz binlerce satır var. En yüksek (en fazla) her n satırını seçmek istiyorum.Satır başına en yüksek değeri al

Daha önce en yüksek değere saatte almak için bir sorgu kullanmıştı, ancak bu aradığım oldukça ne değildir:

SELECT datetime, MAX(value) 
FROM `table` 
GROUP BY date_format(datetime, '%Y-%m-%d &h') 

Herhangi tavsiye büyük takdir!

+1

nasıl 'Her n rows' için nasıl belirleyeceksiniz? datetime veya diğer bazı kriterlere dayanır mı? –

+0

Satırlar, datetime tarafından sipariş edilir ve dizine eklenir. Bu yüzden, ilk 100 değerdeki en yüksek değeri almak istiyorum, ikinci 100 satırdaki en yüksek değer vb. – Kyle

cevap

1

Sen gönlüne sonra agrega satırları numaralandırmak ve edebilirsiniz:

select min(rn), max(rn), min(datetime), max(datetime), max(value) 
from (select t.*, (@rn := @rn + 1) rn 
     from `table` t cross join 
      (select @rn := 0) params 
     order by datetime 
    ) t 
group by floor((rn - 1)/@n) 
order by min(rn); 
+0

Mükemmel, tam da neyin peşindeydim. Teşekkür ederim! – Kyle

İlgili konular