Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[#065] 알고리즘 랭크를 확인 할 수 있는 기능 구현 #78

Merged
merged 10 commits into from
Apr 17, 2024

Conversation

koomin1227
Copy link
Member

이슈

체크리스트

  • 알고리즘 랭크를 찾는 기능 구현
  • 커서, 학과 등의 필터 적용

고민한 내용

페이지 네이션 문제

  • 커서 기준 잡기가 쉽지 않다. point 를 기준으로 정렬해서 내려준다. 하지만 point 가 동점자가 있을 수도 있기 때문에 커서로 선정하기는 문제가 있다. 동점자에 대해서 페이지네이션이 잘 적용되지 않는다.
  • 때문에 point 와 user_id를 같이 커서로 선정했다. 정렬은 point 기준으로 되고 동점자인 경우 userId 사전 순으로 된다.

랭크 찾기 문제

  • 쿼리를 해오며 해당 행의 등수를 찾아와야한다. limit 를 주었기 때문에 그냥 쿼리하면 지금 찾은 데이터에서 1등 부터 매겨서 준다. 이렇게 되면 전체 등수를 알 수 없는 문제가 있다.
  • 해결하기 위해 서브 쿼리를 사용했다. 먼저 모든 데이터에 등수를 매기고 그 데이터에서 현재 찾을 데이터를 가져오면 해결되었다.
    • 아마 서브 쿼리가 사용되었기 때문에 속도가 느려지는 단점이 있지 않을까 하는 생각이 든다.

option

  • option 존재 여부에 따라 쿼리를 다르게 구성해야 하기 때문에 쿼리 옵션을 생성하는 메서드를 분리 하였다.

@koomin1227 koomin1227 requested a review from namewhat99 April 17, 2024 14:35
@koomin1227 koomin1227 self-assigned this Apr 17, 2024
const queryBuilder = this.repository
.createQueryBuilder()
.select(['b.rank', 'b.user_id', 'b.point', 'b.nickname'])
.distinct(true)
Copy link
Contributor

Choose a reason for hiding this comment

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

distinct 가 들어가는 이유가 있나요 혹시?

Copy link
Member Author

Choose a reason for hiding this comment

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

쿼리 빌더에서 의도치 않게 쓰레기 값이 들어가 같은 값이 여러개 출력되는 문제가 발생해서 임시 방편으로 distinct 를 사용했습니다

@namewhat99 namewhat99 merged commit 91b9caf into develop Apr 17, 2024
1 check passed
@namewhat99 namewhat99 deleted the feature/AlgorithmRank-#65 branch April 17, 2024 15:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants