홍동이의 성장일기
[LeetCode] 1204. Last Person to Fit in the Bus (누적합계 구하기) 본문
WITH cte_last AS (
SELECT *
, SUM(weight) OVER(ORDER BY turn) as total_weight
FROM queue
ORDER BY turn
)
SELECT person_name
FROM cte_last
WHERE total_weight <= 1000
ORDER BY total_weight DESC
LIMIT 1
💡 문제 풀이
SELECT *
, SUM(weight) OVER(ORDER BY turn) as total_weight
FROM queue
ORDER BY turn
➡️ SUM OVER을 이용해서 weight의 누적 합계를 구해줍니다.
turn이 빠른 사람부터 차례대로 더해주기위해 turn을 기준으로 정렬해줍니다.
WITH cte_last AS (
SELECT *
, SUM(weight) OVER(ORDER BY turn) as total_weight
FROM queue
ORDER BY turn
)
SELECT *
FROM cte_last
WHERE total_weight <= 1000
➡️ 누적 몸무게가 1000보다 작은 행만 불러옵니다.
ORDER BY total_weight DESC
LIMIT 1
➡️ 다시 누적 몸무게를 내림차순한 후, 가장 윗 행만 나오게하도록 LIMIT을 해줍니다.
728x90
'Tool > SQL 코딩테스트 풀이' 카테고리의 다른 글
[LeetCode] 1907. Count Salary Categories (범위에 값이 없으면 0을 반환) (1) | 2024.01.07 |
---|---|
[LeetCode] 1341. Movie Rating (Union vs. Union All) (2) | 2024.01.03 |
[LeetCode] 1193. Monthly Transactions I (Date_format 날짜 함수) (0) | 2023.12.24 |
[LeetCode] 1174. Immediate Food Delivery II (집계함수에 조건 작성하기) (0) | 2023.12.22 |
[LeetCode] 1164. Product Price at a Given Date (조건에 따라 다른 값 부여하기) (0) | 2023.12.20 |
Comments