首页 > 解决方案 > SQL - 删除总和等于给定数字的随机行

问题描述

我想从总和为 250 的给定表中获取一些随机行(可以更改)。我不需要 100% 准确,但可以是近似的。喜欢 250 (1,5,7)

注意:- 我的表有大量数据。

id | amount|
1  |   96 |
2  |   0.63 |
3  |   351.03 |
4  |   736| 
5  |   53 |
6  |   39 |
7  |   105 |
8  |   91 |

标签: sql

解决方案


对于任何特定数字,您可以使用带连接的逻辑返回最接近的总和。例如 3 个数字 - 如您的示例所示:

select t1.*, t2.*, t3.*
from t t1 join
     t t2
     on t1.id < t2.id join
     t t3
     on t2.id < t3.id
order by abs(250 - (t1.amount + t2.amount + t3.amount))
fetch first 1 row only;

请注意,这fetch first是标准 SQL。一些数据库拼写不同,例如 aslimitselect top.


推荐阅读