最终决定
Coddy SQL 挑战题包 #2 课程的第 3 课,共 3 课。
挑战
中等要建造城堡,建造者需要很多工具。要弄清楚该使用哪些工具以及按什么顺序使用,并不容易。为此,我们会提取重要信息,帮助建造者建造城堡。
现在,建造者有一张力量表,记录了他每小时可以用来操作工具的点数。每小时他可以使用每种工具一次,并且应该尽可能多地使用工具。工具的难度就是建造者使用的点数。
建造者想决定在哪些小时建造城堡。力量和已使用点数之间差值较大的小时是最佳时段。
返回 hour,以及 power 列与 used 列之间的差值,并将此列命名为 space。
删除所有 space 等于零的行,并删除所有包含 30 分钟的小时(13:30、14:30)
返回 hour、points,以及他在该小时使用的点数,并将此列命名为 used
亲手试试
WITH cumulating AS (
SELECT SUM(difficulty) OVER (ORDER BY row_num ASC) as tot_until_now
FROM (
SELECT name, difficulty, ROW_NUMBER() OVER (order by difficulty asc) as row_num
FROM tools
)
order by difficulty
)
SELECT hour, power, (
SELECT tot_until_now
FROM cumulating
WHERE tot_until_now <= power
ORDER BY tot_until_now DESC
LIMIT 1
) as used
FROM strength
SQL 挑战题包 #2中的所有课
自己练习: SQL 在线编辑器