mysql 6개 컬럼에 랭킹을 구하고 싶습니다. 0 6 180

by marchine [MySQL] [2018.07.10 18:00:49]


DRWNO BNUSNO_1 BNUSNO_2 BNUSNO_3 BNUSNO_4 BNUSNO_5 BNUSNO_6
1 15 32 12 35 43 41
2 12 13 14 15 44 17
3 12 30 34 35 42 44

 

table 명은 NUMBER 입니다.

위와 같이 BNUSNO 라고 하는 6개 컬럼이 있는데 해당 숫자의 개수를 랭킹으로 나타내고 싶습니다. 10개까지만요.

중복같은 경우는 같은 순위로 매기고 싶고요.

Oracle 에서는 rank 함수를 쓰는데 MYSQL 에서는 서브쿼리 등 다르게 써야할거 같은데  어떻게 하는게 좋을지 문의 드립니다.

by 마농 [2018.07.10 18:10:54]

모모하고 싶어요~ 형태의 모호한 표현 말구요.
원본 대비 원하시는 결과를 표형태로 보여주세요.
mySQL 버전도 알려주세요. 8.0 부터는 분석함수(Rank 등) 가능합니다.


by marchine [2018.07.11 09:29:53]

단순하게 6개의 컬럼이 가지고 있는 데이터

모든 숫자의 나온 숫자의 순위를 매기고 싶습니다.

예를들어 로또 회차에서 지금까지 많이 가장많이 나온 숫자를 뽑아내거나 하는 것을 만들고 싶습니다.

아래와 같이  만들고 싶습니다.

MYSQL 버전은 5.6.27  입니다.

NUM CNT RANK
12 3 1
44 2 2
35 2 2
14 1 4

 


by 마농 [2018.07.11 09:45:14]
SELECT *
  FROM (SELECT bnusno
             , @rn  := @rn + 1 AS rn
             , @rk  := CASE WHEN cnt = @cnt THEN @rk ELSE @rn END AS rk
             , @cnt := cnt AS cnt
          FROM (SELECT CASE lv
                       WHEN 1 THEN bnusno_1
                       WHEN 2 THEN bnusno_2
                       WHEN 3 THEN bnusno_3
                       WHEN 4 THEN bnusno_4
                       WHEN 5 THEN bnusno_5
                       WHEN 6 THEN bnusno_6
                        END bnusno
                     , COUNT(*) cnt
                  FROM t a
                 CROSS JOIN
                       (SELECT 1 lv
                        UNION ALL SELECT 2
                        UNION ALL SELECT 3
                        UNION ALL SELECT 4
                        UNION ALL SELECT 5
                        UNION ALL SELECT 6
                       ) b
                 GROUP BY bnusno
                 ORDER BY cnt DESC, bnusno DESC
                ) a
             , (SELECT @rn := 0, @rk := 0, @cnt := 0) b
        ) a
 WHERE rk <= 10
;

 


by marchine [2018.07.11 09:54:29]

마농님, 빠른 답변 감사드리고 정확한 답변 감사드립니다.

좋은 하루 되세요 ^^


by 마농 [2018.07.11 10:00:35]

혹시?
로또 번호 인가요? ^^


by marchine [2018.07.11 13:07:03]

아닙니다. 예를 든겁니다 데이터 금액 값에대한 것들인데 그러면 질문하기에 숫자가 너무 커질거 같아서요 ^^

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