sql - 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 |
解决方案
对于任何特定数字,您可以使用带连接的逻辑返回最接近的总和。例如 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。一些数据库拼写不同,例如 aslimit
或select top
.
推荐阅读
- reactjs - 如何预览选择的图片上传React js
- spring-boot - 如何使用 Spring Boot AutoWired 和 ScheduledExecutorService?
- r - 如何使用彩色置信区间带绘制回归原始比例的图?
- windows - Powershell 区别 Add-ADGroupMember 和 Add-ADPrincipalGroupMembership
- kubernetes - 是否可以使用服务名称在 kubernetes 中远程调试 java 程序
- react-native - React Native 蓝牙后台扫描
- java - 确定 Hibernate 中哪个类拥有方
- oauth - 401 Unauthorized - Chrome 应用 Oauth 调用 Google Cloud Functions
- c++ - 在匿名命名空间中定义模板特化(并编译错误 C2888)
- sql - 替代 CASE WHEN 从列创建 bin