mysql - 如何获取单个整数/浮点列的总和达到某个值的行
问题描述
我有一张桌子。它具有以下结构
货物接收项目
- ID
- item_id
- 数量
- created_at
我正在尝试获取具有以下条件的行
有一个 item_id
当数量列之和等于某个值时
所以例如我有以下数据
+----+---------+----------+------------+
| id | item_id | quantity | created_at |
+----+---------+----------+------------+
| 1 | 2 | 11 | 2019-10-10 |
| 2 | 3 | 110 | 2019-10-11 |
| 3 | 2 | 20 | 2019-11-09 |
| 4 | 2 | 5 | 2019-11-10 |
| 5 | 2 | 1 | 2019-11-11 |
+----+---------+----------+------------+
我尝试了以下查询:
SET @sum:= 0;
SELECT item_id, created_at, (@sum:= @sum + quantity) AS SUM, quantity
FROM goods_receiving_items
WHERE item_id = 2 AND @sum<= 6
ORDER BY created_at DESC
如果我不使用ORDER BY
,那么查询会给我 ID '1'。但如果我使用ORDER BY
它将返回所有带有item_id = 2
.
应按此顺序仅返回 ID '5' 和 '4'
我似乎无法解决这个问题,这ORDER BY
对我的任务至关重要。任何帮助,将不胜感激
解决方案
您应该在结果集上使用 order by 您可以使用子查询来执行此操作
SET @sum:= 0;
select t.*
from t (
SELECT item_id
, created_at
, (@sum:= @sum + quantity) as sum
, quantity
FROM goods_receiving_items
WHERE item_id = 2 AND @sum<= 6
) t
ORDER BY created_at DESC
推荐阅读
- system-verilog - Modelsim 中的 wait_order 问题 - 意外关键字
- google-cloud-platform - BigQuery / DataPrep - 有没有办法组合相同 KEY 但不同序列号的行?
- ios - 如果属性不是惰性 var(并且编译器没有告诉我),为什么 #selector 函数不起作用?
- r - 如何使用 Rpy2 在 Python 中导入 R 包 KernSmooth?
- javascript - Mailto 链接未在 Chromebook 上复制电子邮件正文
- node.js - 当我 console.log(req.user) 时,尽管我 console.log(req),它总是未定义,它显示了有关此会话的所有信息
- python - 如果第一个 XML 父标记缺少子标记,Python XPath 和 ElementTree 将不起作用
- zsh - 即使未在任何地方指定插件,也找不到插件
- oracle - ORA-00947 函数返回记录表的值不足
- scrapy - 如何检测亚马逊站点地图