Menu
CoddyTech

最终决定

Coddy SQL 挑战题包 #2 课程的第 3 课,共 3 课。

challenge icon

挑战

中等

要建造城堡,建造者需要很多工具。要弄清楚该使用哪些工具以及按什么顺序使用,并不容易。为此,我们会提取重要信息,帮助建造者建造城堡。 

 

现在,建造者有一张力量表,记录了他每小时可以用来操作工具的点数。每小时他可以使用每种工具一次,并且应该尽可能多地使用工具。工具的难度就是建造者使用的点数。 

 

建造者想决定在哪些小时建造城堡。力量和已使用点数之间差值较大的小时是最佳时段。  

返回 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 在线编辑器