Study / SQL

LeetCode 619. Biggest Single Number

2026.07.29 · 1 min read

기존 velog 링크

초기 답안

SELECT 
    IFNULL(num, null) as num
FROM (
    SELECT
        num,
        COUNT(num) as cnt
    FROM
        MyNumbers
    GROUP BY
        num
    HAVING
        cnt = 1
    ORDER BY
        num DESC 
    LIMIT 
        1
) as t

문제 상황

  • cnt = 0일 경우 null을 표시해야 했으나 아무것도 표시되지 않았다.

문제 원인

  • HAVING cnt = 1 조건으로 인해 서브쿼리 결과가 빈 결과(0행)일 수 있다.
  • 0행이면 IFNULL은 적용할 대상이 없기 때문에 출력도 0행이 된다.

정답 코드

SELECT 
    MAX(num) as num
FROM (
    SELECT
        num,
        COUNT(num) as cnt
    FROM
        MyNumbers
    GROUP BY
        num
    HAVING
        cnt = 1
    ORDER BY
        num DESC 
    LIMIT 
        1
) as t
  • MAX(num)은 집계함수로, 입력 행이 0개여도 행을 1개 반환한다.
  • 계산할 값이 없을 땐 반환하는 값이 NULL이 된다.

댓글 0

아직 댓글이 없습니다.