SQL - 使用 sum() 检索获得值的第一行

标签 sql sql-server aggregate-functions

我有这张表,我们称之为“行”:

id | id_sale | id_product | quantity
1      1           1           4
2      2           1           4
3      3           1           4
4      4           1           4

它代表销售线。

我想获取产品销售 X 次的行的 ID。对于这样的事情,我相信需要按 id asc 进行订单。

例如,根据之前的数据,对于产品 1 和 X = 6,我将获得 id 2。或者,对于 X = 10,我将获得 id 3。

我发现了一个几乎是我需要的问题: use mysql SUM() in a WHERE clause

我已经尝试了正确的答案(适用于 SQL),但在 SQL 中,我无法在子查询中按 id 添加订单,因此我相信查询不再有意义。

这是我迄今为止尝试过的:

select y.id, y.quantity 
from (select t.id, 
            t.quantity, 
            (select sum(x.quantity) 
                from Lines x
                where x.id <= t.id) as atmTotal
        from Lines t where t.id_product = 1) y
where y.atmTotal >= 10
order by y.ID;

结果:这只是返回包含产品 1 的所有 ID(和数量)。

最佳答案

<强> SQL DEMO

SELECT TOP 1 *
FROM (
        SELECT *,
               SUM([quantity]) OVER (ORDER BY [id]) as total // or ORDER [sales_id]
        FROM Lines
     ) T
WHERE total <= 6  // your X
ORDER BY total desc

关于SQL - 使用 sum() 检索获得值的第一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38082345/

相关文章:

sql - 从 Access 导入 Excel 无法正常工作

sql - SQL中的MAP关键字是什么?

SQL - 使用窗口和 case 语句展平表

c# - 无法跟踪实体类型 Model 的实例,因为已经在跟踪另一个具有相同键值 {'Id' } 的实例

sql - 通过删除 NULL 值重构表

sql-server - SQL 连接与左外连接

aggregate-functions - 如何聚合/汇总百分位测量

sql - 复合类型数组上的 SUM 和 GROUP BY

使用另一个表中的相同 ID 对列中的 SUM 值进行 SQL 查询

php - MySQL RLIKE 特殊字符转义 PHP