【问题标题】:Sum subset query求和子集查询
【发布时间】:2018-08-04 15:20:22
【问题描述】:
CREATE TABLE Test (id integer, name varchar(100), weight integer, turn integer);
INSERT INTO Test (id, name, weight, turn) VALUES (5, "George Washington", 250, 1);
INSERT INTO Test (id, name, weight, turn) VALUES (4, "Thomas Jefferson", 175, 5);
INSERT INTO Test (id, name, weight, turn) VALUES (3, "John Adams", 350, 2);
INSERT INTO Test (id, name, weight, turn) VALUES (6, "Thomas Jefferson", 400, 3);
INSERT INTO Test (id, name, weight, turn) VALUES (1, "James Elephant", 500, 6);
INSERT INTO Test (id, name, weight, turn) VALUES (2, "Will Johnliams", 200, 4);

查询应返回一个表,其中恰好包含一条记录“Thomas Jefferson”,因为前三个人将适合(按顺序:George Washingthon、John Adams、Thomas Jefferson)。它们的重量之和是250+350+400

问题是我必须查询可以容纳最大

【问题讨论】:

    标签: mysql sql sum subset


    【解决方案1】:

    我们可以在这里使用相关子查询来检查人的跑步总重量,由轮流顺序给出:

    SELECT t1.*
    FROM Test t1
    WHERE (SELECT SUM(t2.weight) FROM Test t2 WHERE t2.turn <= t1.turn) <= 1000
    ORDER BY t1.turn DESC
    LIMIT 1;
    

    注意:如果您希望所有匹配的人都在体重限制范围内,则只需从上述查询中删除 LIMIT 子句。

    【讨论】:

      猜你喜欢
      • 2023-03-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多