안녕하세요. 이곳에서 많은정보를 참고하고 도움을 받는 개발자입니다.
현재 순위관련 프로그램을 작업중인데요.
결과값은 어느정도 나온것같은데 막히는 부분이 있어 님들의 조언을 받을까 글을 올립니다.
많은 조언바랍니다.
SELECT a.leisureCode, a.prdname, a.totalHap
, COUNT(b.leisureCode) + 1 rk
FROM wiz_appraise a
LEFT OUTER JOIN wiz_appraise b
ON a.gubun = b.gubun //-- gubun은 레저산업코드(여기선 golf)
AND a.totalHap < b.totalHap
GROUP BY a.prdname, a.totalHap
ORDER BY rk ASC
쿼리문은 위와 같습니다.
결과값은 첨부된 이미지와 같습니다.
막히는 부분은 prdname(즉 골프장명칭)이 2개이상일때 하나로 합쳐서 순위를 부여하는 방법이 궁금합니다.
회원들이 골프장을 평가하는 프로그램이라 골프장의 평가점수가 여러개 나올수있는데요.
머리를 쥐어짜서 이렇게도, 저렇게도 해보니 원하는 답이 안나와 글 남깁니다.
그리고 추가적으로 같은점수일때의 순위는 어떻게 정해야할까요? 조언좀 바랍니다.
SELECT a.gubun, a.leisureCode, a.prdname, a.totalHap , COUNT(b.leisureCode) + 1 rk FROM (SELECT gubun, leisureCode, prdname , AVG(totalHap) totalHap FROM wiz_appraise GROUP BY gubun, leisureCode, prdname ) a LEFT OUTER JOIN (SELECT gubun, leisureCode, prdname , AVG(totalHap) totalHap FROM wiz_appraise GROUP BY gubun, leisureCode, prdname ) b ON a.gubun = b.gubun AND a.leisureCode = b.leisureCode AND a.totalHap < b.totalHap GROUP BY a.gubun, a.leisureCode, a.prdname, a.totalHap ORDER BY gubun, rk ; -- 동점 처리) 2등이 둘이면 그다음은 4등 ==> (1, 2, 2, 4)