Adventure Time - Finn 3
본문 바로가기
JAVA/프로그램 설계 및 제작

후원 SQL 변경

by hyun9_9 2024. 2. 10.

문제점 : 같은 금액이면 등수가 같게 나온다

같은 금액이면 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