Skip to content

🧩 Fix : 득점 랭킹 - 이번 주 / 이번 달 DB 조회 추가#220

Merged
tkv00 merged 7 commits into
devfrom
FIX_024025
Nov 17, 2025
Merged

🧩 Fix : 득점 랭킹 - 이번 주 / 이번 달 DB 조회 추가#220
tkv00 merged 7 commits into
devfrom
FIX_024025

Conversation

@tkv00
Copy link
Copy Markdown
Contributor

@tkv00 tkv00 commented Nov 17, 2025

🍀 이슈 번호


✅ 작업 사항

SELECT new com.midas.shootpointer.domain.ranking.entity.RankingEntry(
                null,
                m.memberId,
                m.username,
               CAST(SUM(h.twoPointCount * 2 + h.threePointCount * 3) AS integer),
               CAST(SUM(h.twoPointCount * 2) AS integer),
               CAST(SUM(h.threePointCount * 3) AS integer)
                )
                FROM
                      Member as m
                JOIN
                      HighlightEntity as h ON m.memberId = h.member.memberId
                JOIN
                      PostEntity as p ON p.member.memberId = m.memberId
                WHERE
                     (
                         :type = 'WEEKLY'
                         AND h.createdAt BETWEEN :startDate AND :endDate
                    )
                    OR
                    (
                        :type = 'MONTHLY'
                        AND h.createdAt BETWEEN :startDate AND :endDate
                    )
                GROUP BY
                         m.memberId, m.username
                ORDER BY
                         SUM(h.twoPointCount)*2 + SUM(h.threePointCount)*3 DESC,
                         SUM(h.threePointCount)*3 DESC,
                         SUM(h.twoPointCount)*2 DESC
  1. 위와 같이 이번 주 / 이번 달의 2점+3점 슛 총합 ``내림차순으로 선정된 TOP10의 유저 정보와 득점 정보를 조회하는 쿼리를 작성했습니다.

  2. 파라미터로 type를 입력받아 1개의 쿼리로 이번 주 / 이번 달을 구분하여 조회가능하도록 설계했습니다.


개선 전 - RankingManager.class

if (results==null || results.isEmpty()) {
     return mapper.entryToResponse(Collections.emptyList(),type);
}

개선 후 - RankingManager.class

if (results==null || results.isEmpty()) {
     /**
        * DB에서 직접 조회
     */
       LocalDateTime startDate=rankingUtil.calculateStartDate(LocalDateTime.now(),type);
       LocalDateTime endDate=rankingUtil.calculateEndDate(LocalDateTime.now(),type);

        List<RankingEntry> fetchByDataBase=rankingJpaRepository.fetchThisWeekRankingTop10(startDate,endDate,type);
        List<RankingEntry> rankedData=rankingUtil.calculateRanking(fetchByDataBase);

        return mapper.entryToResponse(rankedData,type);
}

⌨ 기타

@tkv00 tkv00 linked an issue Nov 17, 2025 that may be closed by this pull request
@tkv00 tkv00 requested a review from pjs1710 November 17, 2025 06:18
@tkv00 tkv00 added the 🧩 Fix label Nov 17, 2025
@github-actions
Copy link
Copy Markdown

Test Coverage Report

Overall Project 70.08% -1.86% 🍏
Files changed 11.51%

File Coverage
OpenCVValidatorImpl.java 100% 🍏
EncryptionHelper.java 86.78% 🍏
RankingManager.java 62.5% -37.5%
RankingUtilImpl.java 59.06% -28.35%
RankingJpaRepositoryImpl.java 0%

Copy link
Copy Markdown
Contributor

@pjs1710 pjs1710 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

고생하셨습니다 👍🏻

Comment thread src/main/resources/application.yml
@tkv00 tkv00 merged commit 744f941 into dev Nov 17, 2025
1 check passed
@tkv00 tkv00 deleted the FIX_024025 branch November 24, 2025 02:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

🧩 Fix : 득점 랭킹 - 이번 주 / 이번 달

2 participants