PostgreSQL을 사용하고 있습니다. 내 DB에있는 모든 사용자의 처음 5 거래에 대한 날짜를 가져와야합니다.단일 사용자에 대한 처음 5 개의 항목
Transaction - trans.id, trans.date, trans.cust_id, trans.value
Customer - cust.id, cust.created_at
모든 고객에 대해 처음 5 거래의 날짜를 얻어야합니다.
PostgreSQL을 사용하고 있습니다. 내 DB에있는 모든 사용자의 처음 5 거래에 대한 날짜를 가져와야합니다.단일 사용자에 대한 처음 5 개의 항목
Transaction - trans.id, trans.date, trans.cust_id, trans.value
Customer - cust.id, cust.created_at
모든 고객에 대해 처음 5 거래의 날짜를 얻어야합니다.
이 쿼리를보십시오 :
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
row_number() OVER에서 오류가 발생합니다. 구문 오류 –
PostreSQL 버전은 무엇입니까? Windows 기능 ('over' 절)은 버전 8.4부터 시작됩니다. – krokodilko
몇 번 재 작업하여 효과가있었습니다. 정말 고마워! –
은, 첫 번째 또는 마지막 같은 것은 존재하지 않는다. LIMIT 5를 사용하여 출력을 5 행으로 제한 할 수 있습니다 – mvp