2012-03-08 6 views
0

日付に基づいて、レコードごとの結果の数を制限します最新の3つの書籍はcheck_out_dateに基づいています。言い換えれば、ある人が5冊の本を持っている場合、私は最も最近の3冊の本の記録を返すようにしたいだけです。クエリは、私は私のPostgreSQLデータベースで次の表は、(簡単のためtrunc'ed)き

更新:いくつかの混乱があったので、私にはっきりさせてください。 PostgreSQLデータベースに100個のPersonレコードがある場合、1人あたり3冊の書籍を返却するように、各人のBookレコードを見たいと思っています。したがって、Personに5冊の書籍がある場合は、最初の3冊のみがクエリに返されます。

答えて

1

あなたは人の降順書籍の順序を選択句で使用して、本がトップ3

with tmp as (
    select 
    b.id, 
    b.person_id, 
    b.title, 
    b.check_out_date, 
    row_number() over (partition by b.person_id order by b.check_out_date desc) as order_pos 
    from 
    book b 
) 
select 
    t.id, 
    t.person_id, 
    t.title, 
    t.check_out_date 
from 
    tmp t 
where 
    t.order_pos <= 3 
; 
のどこにいるものの中から選択することができます
関連する問題