문제점 : 같은 금액이면 등수가 같게 나온다
같은 금액이면 REG_DATE 로 확인해서 먼저 등록한사람의 등수가 더 높게 만들기
------v1--
SELECT NVL( S.LOGIN_ID,'탈퇴한 사용자') AS LOGIN_ID,
SUM(S.AMOUNT) AS TOTAL,
NVL( M.NAME,'탈퇴한 사용자')AS NAME,
RANK() OVER (ORDER BY SUM(S.AMOUNT) DESC) AS RANKING
FROM SUPPORT S
LEFT OUTER JOIN MEMBER M ON S.LOGIN_ID = M.LOGIN_ID
GROUP BY S.LOGIN_ID, M.NAME;
동일한 후원 금액을 가진 사용자 중에서 REG_DATE를 기준으로 먼저 등록한 사용자가 더 높은 등수를 갖도록 하려면, 서브쿼리를 사용하여 각 사용자의 최초 등록일을 가져와야 한다. 그 후에 이를 기준으로 순위를 매겨야 한다.
--v2
SELECT
NVL(S.LOGIN_ID, '탈퇴한 사용자') AS LOGIN_ID,
SUM(S.AMOUNT) AS TOTAL,
NVL(M.NAME, '탈퇴한 사용자') AS NAME,
RANK() OVER (ORDER BY SUM(S.AMOUNT) DESC, MIN(S.REG_DATE)) AS RANKING
FROM
SUPPORT S
LEFT OUTER JOIN
MEMBER M ON S.LOGIN_ID = M.LOGIN_ID
GROUP BY
S.LOGIN_ID, M.NAME;
'JAVA > 프로그램 설계 및 제작' 카테고리의 다른 글
세션스토리지로 필터 만들기 (0) | 2024.02.12 |
---|---|
밸런스 게임 후원 트리거 V1~V3 (0) | 2024.01.31 |
SQL 작성 (0) | 2024.01.17 |
밸런스 게임_V2 - 모델 뼈대 (0) | 2024.01.12 |
밸런스 게임 - DTO모음 (0) | 2024.01.12 |