복붙노트

[SQL] 액세스에서 그룹 SQL 당 상위 N 개 기록

SQL

액세스에서 그룹 SQL 당 상위 N 개 기록

나는 시험의 점수를 추적하는 일부 소프트웨어를 제작하고있다. 사용자 테이블에 저장되어있는 세부있는 다수의 사용자가 있습니다. 날짜와 그것이의 점수 사용자와의 점수를 추적하는 진행 테이블은 있습니다.

이미 선택된 사용자 ID에 대한 3 개 가장 최근의 기록을 선택할 수 있습니다

SELECT TOP 3 Progress.LoginID, Progress.Score, Progress.[Date Taken]
FROM Progress
WHERE (((Progress.LoginID)=[Enter LoginID:]))
ORDER BY Progress.[Date Taken] DESC;

그리고 난은 loginid별로 그룹화 모든 레코드를 표시 할 수 있습니다

SELECT Progress.LoginID, Progress.Score, Progress.[Date Taken]
FROM Progress
GROUP BY Progress.LoginID, Progress.Score, Progress.[Date Taken];

나는 한 쿼리에서 각 사용자에 대한 3 개 가장 최근의 기록을 보여줄 수 있어야합니다 나는 그렇게 중첩 된 쿼리 / 하위 쿼리를 사용하는 방법 확실 해요.

사용자 테이블의 필드 이름은 다음과 같습니다 :

LoginID   
Forename    
Surname   
DOB   
Guardian Forename     
Guardian Surname      
Telephone Number  

진행 테이블의 필드 이름은 다음과 같습니다 :

ProgressID    
LoginID   
Score     
Date Taken 

어떤 도움을 주시면 감사하겠습니다.

해결법

  1. ==============================

    1.나는 년 전에 비슷한 문제가 있었다 : 상위 3 그룹 0을 포함하여 당

    나는 년 전에 비슷한 문제가 있었다 : 상위 3 그룹 0을 포함하여 당

    같은 방법을 사용하여,이 각은 loginid의 최신 세 날짜를 반환합니다 - 동일은 loginid에 대한 날짜가 연결되어 있다면 당신은 세 개 이상의 기록을 얻을 수 있습니다.

    SELECT  PR1.LogInID, PR1.Score, PR1.[Date Taken]
    FROM    Progress AS PR1
    WHERE   PR1.[Date Taken] IN (
                            SELECT TOP 3 PR2.[Date Taken]
                            FROM    Progress PR2
                            WHERE   PR2.LoginID = PR1.LoginID
                            ORDER BY PR2.[Date Taken] DESC
                            )
    ORDER BY    LoginID, [Date Taken]
    
  2. from https://stackoverflow.com/questions/41220690/top-n-records-per-group-sql-in-access by cc-by-sa and MIT license