题目:
自己去搜一下吧。
解题思路:
这里最重要的知识点是累加求和,而不是直接汇总求和。
如果直接汇总求和体重就是SUM(weight),而根据turn的次序,累加求和,则需要SUM(weight)over (order by turn),这样就可以实现根据次序,累加体重的问题。
还有一个问题,因为他需要找到累加小于等于1000KG的最大值。
怎么实现呢?通过降序排序total_weight,然后取一个。这便实现了最大值的问题,而不用非得用max之类的。
答案参考:
select t.person_name from (select turn,person_id,person_name ,weight,SUM(weight) OVER (ORDER BY turn ) as total_weight from Queue order by turn ) t
where t.total_weight <= 1000 ORDER BY t.total_weight DESC LIMIT 1;