MySQL 리트코드 | Biggest Single Number (WHERE절, FROM절 서브쿼리)

    728x90

     

    문제

    https://leetcode.com/problems/biggest-single-number/description/?envType=study-plan-v2&envId=top-sql-50

    • MyNumbers 테이블에서 한 번만 등장하는 숫자 중 가장 큰 숫자 찾기
    • 만약 한 번만 등장하는 숫자가 없으면 null로 표시하기

     

    테이블

    MyNumbers num
    8
    8
    3
    3
    1
    4
    5
    6
    • 한 번만 등장하는 숫자 : 1, 4, 5, 6
      • 이 중에 가장 큰 숫자 : 6

     

    풀이과정

    ▶ WHERE절 IN함수 내 서브쿼리 활용

    # 한 번만 등장하는 숫자 구하기

    • WHERE 조건절에 IN() 함수 및 서브쿼리 활용 
      • num 별로 그룹화했을 때 COUNT 값이 1인 경우만 추출 

     

    # 그 중 가장 큰 숫자 구하기

      • WHERE 조건절로 만들어진 (한 번만 등장하는 숫자로만 이루어진) 테이블에서 MAX인 값 조회하기

     

    # 정답

    1
    2
    3
    SELECT MAX(num) num
    FROM MyNumbers
    WHERE num IN(SELECT num FROM MyNumbers GROUP BY num HAVING COUNT(num)=1)
    cs

     

    다른 사람 풀이 참고

    ▶ FROM절 서브쿼리 활용

    # 한 번만 등장하는 숫자 테이블 만들기

    • FROM절에 서브쿼리로 (한 번만 등장하는 숫자로 이루어진) 테이블 만들기 
      • num 별로 그룹화했을 때 COUNT 값이 1인 경우만 추출 

     

    # 그 중 가장 큰 숫자 구하기

      • FROM절 테이블에서 MAX인 값 조회하기

     

    # 정답

    1
    2
    3
    4
    5
    6
    7
    SELECT MAX(num) AS num
    FROM (
        SELECT num
        FROM MyNumbers
        GROUP BY num
        HAVING COUNT(num) = 1
    ) AS unique_numbers;
    cs

     

     

     

    728x90

    댓글