본문 바로가기
SQL

[solvesql - day 10] 최대값을 가진 행 찾기

by 우솨 2025. 1. 10.

https://solvesql.com/problems/max-row/

 

https://solvesql.com/problems/max-row/

 

solvesql.com

-- 'points' 테이블에서 가장 큰 x값과 y값을 가진 행을 각각 찾은 후,
-- 해당 행들의 id를 합쳐서 결과를 반환하는 쿼리

WITH A AS (
    -- 'points' 테이블에서 'x' 값이 가장 큰 행의 'id'를 찾음
    -- 'order by x desc' : x 값을 내림차순으로 정렬하여 가장 큰 값을 찾음
    -- 'limit 1' : 첫 번째로 나온 행만 반환 (가장 큰 x값을 가진 행)
    SELECT id
    FROM points
    ORDER BY x DESC  -- x 값 기준 내림차순 정렬
    LIMIT 1           -- 가장 큰 x 값을 가진 행 하나만 선택
),

B AS (
    -- 'points' 테이블에서 'y' 값이 가장 큰 행의 'id'를 찾음
    -- 'order by y desc' : y 값을 내림차순으로 정렬하여 가장 큰 값을 찾음
    -- 'limit 1' : 첫 번째로 나온 행만 반환 (가장 큰 y값을 가진 행)
    SELECT id
    FROM points
    ORDER BY y DESC  -- y 값 기준 내림차순 정렬
    LIMIT 1           -- 가장 큰 y 값을 가진 행 하나만 선택
)

-- 'A'와 'B'에서 추출한 'id' 값을 합친 후, 'id' 기준으로 정렬하여 반환
SELECT id
FROM B  -- B 테이블에서 가장 큰 y 값을 가진 id 선택
UNION
SELECT id
FROM A  -- A 테이블에서 가장 큰 x 값을 가진 id 선택
ORDER BY id  -- 'id' 값 기준으로 결과를 오름차순 정렬