# ๋ฌธ์
https://leetcode.com/problems/last-person-to-fit-in-the-bus/description/
# ๋ฌธ์ ์์ฝ
์ด ๋ฌด๊ฒํฉ์ด 1000์ดํ์ธ ์ํ์์ ๋ง์ง๋ง ํ์นํ ์ฌ๋์ ์ด๋ฆ ๊ตฌํ๊ธฐ
# ํท๊ฐ๋ ธ๋ ๋ถ๋ถ
์ด ํฉ๊ณ๋ฅผ ๊ณ์ฐํด์ผ ํด์ @set์ ์ฌ์ฉํด์ผ ํ๋์ค ์์๋ค
# ํต์ฌ ๊ฐ๋
๋์ ํฉ์ ๊ณ์ฐํ ๋, ์๋์ฐ ํจ์๋ฅผ ์ด์ฉํ ์ ์๋ค
sum(์ปฌ๋ผ) over (order by ์ปฌ๋ผ) ์ ์ฌ์ฉํ์๋ค
sum(weight) over (order by turn)
# ์ฝ๋ ํ์ธ
with cte as (
select *,
sum(weight) over (order by turn) as num,
case when sum(weight) over (order by turn) <= 1000 then 'yes'
else 'no' end as 'yes_no'
from Queue
order by turn
)
select *
from cte
# ์ ๋ต ์ฝ๋
with cte as (
select *,
sum(weight) over (order by turn) as num,
case when sum(weight) over (order by turn) <= 1000 then 'yes'
else 'no' end as 'yes_no'
from Queue
order by turn
)
select person_name
from cte
where num = (select max(num)
from cte
where yes_no = 'yes')