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;

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