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;