순위구하기 0 2 510

by 날아라! [MySQL] [2018.05.23 08:15:17]


20180523_081445.png (4,323Bytes)

안녕하세요. 이곳에서 많은정보를 참고하고 도움을 받는 개발자입니다.

현재 순위관련 프로그램을 작업중인데요.

결과값은 어느정도 나온것같은데 막히는 부분이 있어 님들의 조언을 받을까 글을 올립니다.

많은 조언바랍니다.

 

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개이상일때 하나로 합쳐서 순위를 부여하는 방법이 궁금합니다.

회원들이 골프장을 평가하는 프로그램이라 골프장의 평가점수가 여러개 나올수있는데요.

머리를 쥐어짜서 이렇게도, 저렇게도 해보니 원하는 답이 안나와 글 남깁니다.

그리고 추가적으로 같은점수일때의 순위는 어떻게 정해야할까요? 조언좀 바랍니다.

 

by 마농 [2018.05.23 09:32:19]
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)

 


by 날아라! [2018.05.23 09:54:37]

앗...마농님 감사합니다.

많은 도움되었습니다.^^

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입