다른 요인을 기반으로 중복 레코드 수를 얻는 SQL 쿼리
-
07-07-2019 - |
문제
나는 모두 구별 될 수있는 여러 열이있는 테이블 (참가자)이 있습니다. 이 쿼리에 특별한 관심이있는 두 개의 열은 userId와 프로그램이 여기에 두 개의 부품 심문이 있습니다.
- 이 테이블에 두 번 이상 나타나는 모든 사용자 ID의 목록을 얻을 수 있기를 원합니다. 어떻게해야합니까?
동일한 userID가 여러 프로그램에 나타나는 모든 프로그램의 수를 얻을 수 있기를 원합니다. (즉, 동일한 userID가 2 개의 프로그램에 나타나는 프로그램 수, 3 개의 프로그램 등에 동일한 userID가 나타나는 프로그램 수 ...) 예를 들어 :
programID: prog1 userID: uid1 userID: uid3 userID: uid12 programID: prog2 userID: uid3 userID: uid5 userID: uid14 userID: uid27 programID: prog3 userID: uid3 userID: uid7 userID: uid14 userID: uid30 programID: prog4 userID: uid1
예상 결과 : userId count = 2; 프로그램 = 3 userID count = 3; 프로그램 = 3
누구든지 나를 도와 줄 수 있습니까?
질문 1의 현재 코드는 다음과 같습니다.
SELECT
WPP.USERID,
WPI.EMAIL,
WPI.FIRSTNAME,
WPI.LASTNAME,
WPI.INSTITUTION
FROM WEBPROGRAMPARTICIPANTS WPP
INNER JOIN WEBPERSONALINFO WPI
ON WPP.USERID = WPI.USERID
INNER JOIN WEBPROGRAMS WP
ON WPP.PROGRAMCODE = WP.PROGRAMCODE
WHERE
WP.PROGRAMTYPE IN ('1','2','3','4','5','6', '9', '10')
GROUP BY
WPP.USERID,
WPI.EMAIL,
WPI.FIRSTNAME,
WPI.LASTNAME,
WPI.INSTITUTION
HAVING COUNT(WPP.USERID) > 1
ORDER BY WPI.EMAIL
해결책 3
이것은 내 측면에 문제가 있었고, 논리 단계가 남지 않았습니다.
다른 팁
1.
select userID , SUM(userID ) AS Count
from Preparations
group by userID where Count > 1
Part One의 쿼리는 좋아 보입니다. 파트 2에 대한 쿼리는 다음과 같습니다.
SELECT DISTINCT p1.programID, COUNT(p1.userID) AS Multiple
FROM participants p1
JOIN participants p2 ON p2.userID = p1.userID
GROUP BY p1.userID, programID
ORDER BY Multiple, programID
프로그램 및 각 프로그램에 대해 동일한 userID가 나타나는 다른 프로그램의 수를 나열합니다. 샘플 데이터에 대해 예상 결과가 잘못되었다고 생각합니다. 그것은해야한다:
userId count = 1; 프로그램 = 3; userId count = 2; 프로그램 = 4; userId count = 3; 프로그램 = 3;
결과를 미세 조정하려면 예상 결과를 예상 결과와 비슷하게 보이려면 위를 하위 쿼리 (파생 테이블)로 사용할 수 있습니다.
제휴하지 않습니다 StackOverflow