더북(TheBook)

COUNT(*) 값을 기준으로 내림차순 정렬(ORDER BY 2 DESC)을 하니 1번이 가장 많이 당첨된 것을 알 수 있습니다. 하지만 이는 num1 컬럼에 대해서만 집계한 것이고 나머지 num2~num6 컬럼에도 같은 로직을 적용해야 합니다. 따라서 쿼리 12-5 형태로 나머지 컬럼도 조회하는 쿼리를 만들어 이를 UNION ALL로 연결해야 전체 번호에 대한 당첨 건수를 알 수 있습니다. 그리고 이를 기반으로 다시 COUNT(*) 값으로 내림차순 정렬하면 가장 많은 당첨번호를 찾을 수 있겠죠.

쿼리 12-6 가장 많은 당첨번호 조회

SELECT lotto_num, SUM(cnt) AS cnt
  FROM ( SELECT num1 lotto_num, COUNT(*) cnt
           FROM lotto_master
          GROUP BY num1
          UNION ALL
         SELECT num2 lotto_num, COUNT(*) cnt
           FROM lotto_master
          GROUP BY num2
         UNION ALL
         SELECT num3 lotto_num, COUNT(*) cnt
           FROM lotto_master
          GROUP BY num3
         UNION ALL
         SELECT num4 lotto_num, COUNT(*) cnt
           FROM lotto_master
          GROUP BY num4
         UNION ALL
         SELECT num5 lotto_num, COUNT(*) cnt
           FROM lotto_master  
          GROUP BY num5
          UNION ALL
         SELECT num6 lotto_num, COUNT(*) cnt
           FROM lotto_master  
          GROUP BY num6
       )
 GROUP BY lotto_num
 ORDER BY 2 DESC;

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.