2016-11-12 6 views
0

DB에 3 개 이상의 레코드가있는 모든 사용자를 얻고 싶지만 동일한 날짜를 가질 수는 없습니다. 예 테이블 : 여기에서 그래서고유 날짜에 대한 SELECT 레코드 SQL

User1 40 12/11/15 
User1 33 13/11/16 
User1 23 04/09/16 
User2 21 30/09/16 
User3 12 12/11/16 
User3 54 12/11/16 
User3 99 04/09/16 

, 나는 사용자 1 만, 사용자 3 3 개 레코드가 가져올 있지만 2가 같은 날에 있기 때문에, 그는 자격이되지 않습니다. (두 개 이상의 레코드가 같은 날에있는 경우 별개의 날짜에 최소 3 개가있는 한 괜찮습니다. 따라서 다른 날짜에 user3에 대한 레코드를 하나 더 추가하면 요구 사항도 충족하게됩니다.)

이 지금까지 내 쿼리는 다음과 같습니다

SELECT id, price, date 
FROM Table 
WHERE id 
IN (

SELECT id 
FROM Table 
GROUP BY id 
HAVING COUNT(ocust) >=3 
) 

그것은 세 이상의 레코드를 가지고 요구 사항을 담당하지만 나는 별개의 최신 요구 사항을 돌보는 방법을 모르겠어요.

답변

1

당신은 dateCOUNTDISTINCT를 추가하고 (즉 무엇이든) ocust을 변경해야

SELECT id, price, date 
FROM Table 
WHERE id 
IN (
    SELECT id 
    FROM Table 
    GROUP BY id 
    HAVING COUNT(DISTINCT date) >=3 -- Added DISTINCT, changed 'ocust' to 'date' 
)