최대 1 분 소요

문제 링크

정답

SELECT
    person_name
FROM (
    SELECT
        turn, person_id, person_name, weight,
        SUM(weight) OVER (ORDER BY turn) as total_weight
    FROM Queue
    ORDER BY turn
) Queue_with_total_weight
WHERE total_weight <= 1000
ORDER BY total_weight DESC
LIMIT 1;

✅ Point

  • SUM OVER 을 통한 누적합 계산
    • SUM(weight) OVER (ORDER BY turn) as total_weight
  • 누적합을 계산한 table을 subquery
  • 누적합 최대 조건을 만족하는 마지막 행만 뽑아내기