문제

나는 모두 구별 될 수있는 여러 열이있는 테이블 (참가자)이 있습니다. 이 쿼리에 특별한 관심이있는 두 개의 열은 userId와 프로그램이 여기에 두 개의 부품 심문이 있습니다.

  1. 이 테이블에 두 번 이상 나타나는 모든 사용자 ID의 목록을 얻을 수 있기를 원합니다. 어떻게해야합니까?
  2. 동일한 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;

결과를 미세 조정하려면 예상 결과를 예상 결과와 비슷하게 보이려면 위를 하위 쿼리 (파생 테이블)로 사용할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top