전체 유저에서 내 위치(%) 구하는 코드
public Long getTotalMyScore(AuthAccountInfo info) {
List<Skill> skill = skillRepository.findByEmail(info.email());
Map<Category, SkillTotalScoreResponse> response = new HashMap<>();
Long totalScoreResult = 0L;
Long score = 0L;
// 자신의 스킬 정보를 바탕으로 총점 계산
for (Skill sl : skill) {
Long totalCount = sl.getCorrectCount() == 0 ? 0 : sl.getTotalCount() / sl.getCorrectCount() * 100;
score += sl.getCorrectCount();
response.put(sl.getCategory(), SkillTotalScoreResponse.builder()
.totalScore(totalCount)
.currentCount(sl.getCorrectCount())
.totalCount(sl.getTotalCount())
.build());
totalScoreResult += totalCount;
}
// 전체 유저의 총점 계산
List<Skill> allSkills = skillRepository.findAll();
Long totalPeopleScore = 0L;
for (Skill sl : allSkills) {
totalPeopleScore += sl.getCorrectCount();
}
// 평균을 통해 전체 유저의 평균 점수 계산
Long averagePeopleScore = totalPeopleScore / allSkills.size();
// 자신의 점수가 상위 몇 퍼센트인지 계산
Long percentile = (score * 100) / averagePeopleScore;
return percentile;
}