【发布时间】:2021-02-11 07:03:32
【问题描述】:
我有一个场景,有一个容量为 1000 磅的自动扶梯。进入自动扶梯的总重量不得超过 1000 磅。LINE 表包含人员姓名、体重和排队人数。
下面是表格语法和其中的值
create table line (id int not null PRIMARY KEY,
name varchar(255) not null,
weight int not null,
turn int unique not null,
check (weight > 0)
);
INSERT INTO LINE VALUES(6,'George Washington', 250, 1);
INSERT INTO LINE VALUES(5,'Thomas Jefferson',175, 7);
INSERT INTO LINE VALUES(3,'John Adams',350, 2);
INSERT INTO LINE VALUES(7,'Thomas Jefferson',800, 3);
INSERT INTO LINE VALUES(1,'James Elephant',500, 6);
INSERT INTO LINE VALUES(2,'Andy',200, 5);
INSERT INTO LINE VALUES(4,'Will Smith',400, 4);
现在我需要编写一个查询来打印进入电梯的最后一个人的姓名。意味着,最后一个人,电梯容量将被填满。应根据 TURN 值给予优先级,即第一人应给予第一优先权,第二人应给予第二优先权,依此类推。前2人体重之和依次为600,如果下一个人(Thomas Jefferson,Weight-800)进入自动扶梯,则超出自动扶梯容量。因此,应忽略/排除此人并添加下一个人(Will Smith,Weight- 400) 到自动扶梯。现在,所有人体重的总和为 1000,因此,Will Smith 的名字应该显示在输出中。
能否请您指导我为此编写 SQL 查询。
PS:这是我的第一篇文章。如有错误请忽略。
【问题讨论】:
-
您的规则看起来很复杂,您可能想更好地解释它们。
-
还有指定预期的结果。