2014-01-20 4 views
-4

PostgreSQL을 사용하고 있습니다. 내 DB에있는 모든 사용자의 처음 5 거래에 대한 날짜를 가져와야합니다.단일 사용자에 대한 처음 5 개의 항목

Transaction - trans.id, trans.date, trans.cust_id, trans.value 
Customer - cust.id, cust.created_at 

모든 고객에 대해 처음 5 거래의 날짜를 얻어야합니다.

+0

은, 첫 번째 또는 마지막 같은 것은 존재하지 않는다. LIMIT 5를 사용하여 출력을 5 행으로 제한 할 수 있습니다 – mvp

답변

0

이 쿼리를보십시오 :

SELECT cust_id, date 
FROM (
    SELECT cust_id, 
     date, 
     row_number() OVER (partition by cust_id 
          ORDER BY date, id) rn 
    FROM Transaction 
) as alias 
WHERE rn <= 5 
ORDER BY 1,2 

데모 : 당신이 뭔가에 의해 ORDER를 사용하지 않는 관계형 데이터베이스의 http://sqlfiddle.com/#!15/cfd2e/4

+0

row_number() OVER에서 오류가 발생합니다. 구문 오류 –

+0

PostreSQL 버전은 무엇입니까? Windows 기능 ('over' 절)은 버전 8.4부터 시작됩니다. – krokodilko

+0

몇 번 재 작업하여 효과가있었습니다. 정말 고마워! –

관련 문제