【发布时间】:2021-11-05 06:14:06
【问题描述】:
鉴于我有下表
| Id | FileSizeMB |
|---|---|
| 1 | 100 |
| 2 | 100 |
| 3 | 100 |
| 4 | 100 |
| 5 | 100 |
| 6 | 100 |
我想选择超过累积值的最旧记录,在本例中为 500。
像这样的
| Id | Cumulative_FileSizeMB |
|---|---|
| 6 | 100 |
| 5 | 200 |
| 4 | 300 |
| 3 | 400 |
| 2 | 500 |
| 1 | 600 |
我只想选择 id 为 2 和 1 的记录,因为它们 >= 500。 目标是删除它们。
谢谢
【问题讨论】:
标签: mysql
鉴于我有下表
| Id | FileSizeMB |
|---|---|
| 1 | 100 |
| 2 | 100 |
| 3 | 100 |
| 4 | 100 |
| 5 | 100 |
| 6 | 100 |
我想选择超过累积值的最旧记录,在本例中为 500。
像这样的
| Id | Cumulative_FileSizeMB |
|---|---|
| 6 | 100 |
| 5 | 200 |
| 4 | 300 |
| 3 | 400 |
| 2 | 500 |
| 1 | 600 |
我只想选择 id 为 2 和 1 的记录,因为它们 >= 500。 目标是删除它们。
谢谢
【问题讨论】:
标签: mysql
对于任何有同样问题的人。 我已经使用 Mysql 窗口函数达到了这个解决方案, 而且也不需要为累计总数声明一个变量
SELECT * from (
SELECT
id,
FileSizeMB,
SUM(FileSizeMB) OVER (ORDER BY id DESC) AS TotalFileSizeMB
FROM table
) as t1
WHERE TotalFileSizeMB > 500
【讨论】: