당신은 당신의 MySQL 버전을 지원하는 경우 windowing functions을 체크 아웃 할 수 있습니다 ...
SELECT m.member_id AS member_id,
(SUM(c.vote_value) + SUM(c.best)*10) AS total,
RANK() OVER (ORDER BY (SUM(c.vote_value) + SUM(c.best)*10)) as ranking
FROM comments c
LEFT JOIN members m ON c.author_id = m.member_id
GROUP BY c.author_id
ORDER BY total DESC;
또 다른 가능성은 다음과 같습니다.
SELECT m.member_id AS member_id,
(SUM(c.vote_value) + SUM(c.best)*10) AS total,
(SELECT count(distinct <column you want to rank by>)
FROM comments c1
WHERE c1.author_id = m.member_id) as ranking
FROM comments c
LEFT JOIN members m ON c.author_id = m.member_id
GROUP BY c.author_id
ORDER BY total DESC;
NB :이 문제를 해결하기위한 많은 질문이 있지만 위의 두 기술은 일반적으로 순위를 결정하는 간단한 방법입니다. 위에서 언급 한 내용을 회원님의 정확한 요구 사항에 맞게 변경하고 싶습니다. member_id의 순위를 구성하는 요소가 약간 퍼지기 때문입니다.
저는 이해가 안됩니다. 쿼리가 정상적으로 보입니다. 어쩌면 샘플 데이터와 예상 출력이 도움이 될까요? –
순위, 순위 표시 방법 및 지정된 UID – Kenan