gpt4 book ai didi

SQLite - 根据特定的计算总和过滤记录

转载 作者:行者123 更新时间:2023-12-03 18:23:43 25 4
gpt4 key购买 nike

我得到了一个表格,其中包含不同数量的记录,其中包含人员、他们的体重和一个订单值,该订单值决定了应该选择人员的顺序......

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)
);

order 中一起计算人的体重时,我必须从表中检索不超过 1000 磅的最后一条记录.

例如。如果表是
id | name                | weight  | order |
---+---------------------+---------+-------+
5 | Mark | 250 | 1 |
4 | James | 175 | 5 |
3 | John | 350 | 2 |
6 | James | 400 | 3 |
1 | Rick | 500 | 6 |
2 | Mike | 200 | 4 |

查询应该只返回 James,因为前三个(根据 order)选择的人的体重将在 1000 磅以内。这三个人的体重之和是 250 + 350 + 400 = 1000 .

同名的人可能在表中。因此,应使用 id 进行计算。

我将如何编写一个可以相应过滤的 SQLite 语句?

我应该先通过 order 订购但是从那里我的SQL知识太有限了,无法弄清楚如何计算1000以内的总和......
SELECT name, weight, order FROM line ORDER BY order ASC

最佳答案

我们可以使用相关的子查询来做到这一点:

SELECT
id,
name,
weight,
"order",
FROM line t1
WHERE
(SELECT SUM(t2.weight) FROM line t2 WHERE t2."order" <= t1."order") <= 1000
ORDER BY
"order" DESC
LIMIT 1;

上述查询中的相关子查询计算订单给定的权重的运行总和。 WHERE子句仅限制累积权重不超过 1000 的行记录。然后,我们按 order 降序排列 LIMIT 1 的列以 James为目标记录。

顺便说一句,避免使用像 order 这样的 SQL 关键字。命名您的列。

关于SQLite - 根据特定的计算总和过滤记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51578384/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com