질문있습니다!! 0 3 542

by 김유림 [2021.01.26 12:51:07]


안녕하세요!!!

 

by 마농 [2021.01.26 13:44:02]
SELECT CHR(64+alpha) AS p
     , MIN(DECODE(rNum, 1, lotto)) AS n1
     , MIN(DECODE(rNum, 2, lotto)) AS n2
     , MIN(DECODE(rNum, 3, lotto)) AS n3
     , MIN(DECODE(rNum, 4, lotto)) AS n4
     , MIN(DECODE(rNum, 5, lotto)) AS n5
     , MIN(DECODE(rNum, 6, lotto)) AS n6
  FROM (SELECT alpha
             , lotto
             , ROW_NUMBER() OVER(PARTITION BY alpha ORDER BY lotto) rNum    -- 요기
          FROM (SELECT alpha
                     , lotto
                     , ROW_NUMBER() OVER(PARTITION BY alpha ORDER BY dbms_random.value) rNum
                  FROM (SELECT LEVEL alpha FROM dual CONNECT BY LEVEL <= 5)
                     , (SELECT LEVEL lotto FROM dual CONNECT BY LEVEL <= 45)
                -- ORDER BY alpha ASC, lotto ASC    -- 불필요.
                )
         WHERE rNum <= 6
        )
 GROUP BY alpha
 ORDER BY alpha    -- 필요.
;

 


by 김유림 [2021.01.26 14:21:15]

혹시 rNum <=6 을안붙이면 LOTTO가 1부터 계속 찍히는데, 붙이니까 그제서야 랜덤값으로 다 찍히더라구요 

이유를 알수있을까요?


by 마농 [2021.01.26 15:00:57]

로또가 45개 번호중 6개를 무작위(랜덤)로 뽑는 거 잖아요.
6개 뽑는 조건을 제거하면 45개 번호가 다 나오죠.
서브쿼리 단계별로 나누어 실행해 보세요.

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