SORU
25 Ocak 2010, PAZARTESİ


N almak için GRUP içinde SINIRI kullanarak her bir grup sonuçlar?

Aşağıdaki sorgu:

SELECT
year, id, rate
FROM h
WHERE year BETWEEN 2000 AND 2009
AND id IN (SELECT rid FROM table2)
GROUP BY id, year
ORDER BY id, rate DESC

verim:

year    id  rate
2006    p01 8
2003    p01 7.4
2008    p01 6.8
2001    p01 5.9
2007    p01 5.3
2009    p01 4.4
2002    p01 3.9
2004    p01 3.5
2005    p01 2.1
2000    p01 0.8
2001    p02 12.5
2004    p02 12.4
2002    p02 12.2
2003    p02 10.3
2000    p02 8.7
2006    p02 4.6
2007    p02 3.3

İstediğim sadece her kimlik için en iyi 5 sonuçlar:

2006    p01 8
2003    p01 7.4
2008    p01 6.8
2001    p01 5.9
2007    p01 5.3
2001    p02 12.5
2004    p02 12.4
2002    p02 12.2
2003    p02 10.3
2000    p02 8.7

Bir şekilde bu GRUP içinde çalışmalar değiştirici gibi bir SINIRI var mı?

CEVAP
25 Ocak 2010, PAZARTESİ


Bu MySQL yapılabilir, ama LIMIT bir madde eklemek kadar basit değildir. Burada ayrıntılı olarak sorunu açıklayan bir makale:

How to select the first/least/max row per group in SQL

İyi bir makale - N başına grup" sorunu, ve sonra yavaş yavaş geliştirir. "Üst zarif ama naif bir çözüm tanıttı

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Brendan van Son

    Brendan van

    5 Aralık 2006
  • ImBluecams

    ImBluecams

    25 Kasım 2012
  • spederson7

    spederson7

    17 Temmuz 2006