SORU
14 Temmuz 2009, Salı


PostgreSQL gruplanmış LİMİT: her grup için ilk N satırları göster?

Her grup, özel sütun tarafından sipariş edilen ilk N satırları almak istiyorum.

Verilen Aşağıdaki tablo:

db=# SELECT * FROM xxx;
 id | section_id | name
---- ------------ ------
  1 |          1 | A
  2 |          1 | B
  3 |          1 | C
  4 |          1 | D
  5 |          2 | E
  6 |          2 | F
  7 |          3 | G
  8 |          2 | H
(8 rows)

İlk 2 satır sana göre emrettiadıher içinsection_idyani sonuç benzer:

 id | section_id | name
---- ------------ ------
  1 |          1 | A
  2 |          1 | B
  5 |          2 | E
  6 |          2 | F
  7 |          3 | G
(5 rows)

PostgreSQL 8.3.5 kullanıyorum.

CEVAP
19 Mayıs 2011, PERŞEMBE


Yeni çözüm (PostgreSQL 8.4)

SELECT
  * 
FROM (
  SELECT
    ROW_NUMBER() OVER (PARTITION BY session_id ORDER BY name) AS r,
    t.*
  FROM
    xxx t) x
WHERE
  x.r <= 2;

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • David Tedeyev

    David Tedeye

    20 AĞUSTOS 2011
  • NCIX Tech Tips

    NCIX Tech Ti

    2 Ocak 2007
  • trickycharms

    trickycharms

    6 Aralık 2013