https://solvesql.com/problems/max-row/
-- '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' 값 기준으로 결과를 오름차순 정렬
'SQL' 카테고리의 다른 글
[solvesql - day 12] 3년간 들어온 소장품 집계하기 (0) | 2025.01.11 |
---|---|
[solvesql - day 11] 서울숲 요일별 대기오염도 계산하기 (1) | 2025.01.11 |
[solvesql - day 9] 게임 평점 예측하기 1 (0) | 2025.01.10 |
[solvesql - day 8] 온라인 쇼핑몰의 월 별 매출액 집계 (0) | 2025.01.10 |
[solvesql - day 7] 기증품 비율 계산하기 (0) | 2025.01.10 |