sql - 有没有办法随机存储行并使这些存储桶具有相似的值?
问题描述
我目前在 dbo.loans 表中标记了许多贷款。此表在 [loan_tag] 字段中标记贷款,在 [sub_bin] 字段中标记子存储桶。现在我正在尝试使用随机选择的贷款创建子存储桶,但也具有相似的账面价值。使用类似于下面的查询选择/更新新字段没有问题
使用类似于以下的查询选择/更新新字段没有问题:
UPDATE DBO.LOANS SET SUB_BIN = "SUB-BUCKET2" WHERE CAPS_HEDGE IN ( SELECT TOP 10000 CAPS_HEDGE FROM DBO.LOANS WHERE SUB_BIN IS NULL AND LOAN_TAG = "PARENT_BUCKET" ORDER BY NEWID() )
如果有 50,000 条记录,我可以运行 5 次,每次运行都更改子存储桶名称。
我现在需要的是确保各个存储桶具有相似的总账面价值,这是 dbo.loans 中的另一个字段名称。通过运行 5 次,它会给我 5 个具有相同记录数的子存储桶,但不同且随机的 book_values。
有谁知道我怎么能做到这一点?此外,有没有办法让这个运行 N 次并针对所有不同的父存储桶名称?
解决方案
如果要分配一个账面价值大致相等的随机箱,则按顺序为账面价值分配一个数字并取每个第 n 个:
with toupdate as (
select l.*, row_number() over (order by book_value) as seqnum
from loans l
)
update toupdate
set sub_bin = seqnum % 5;
推荐阅读
- c++ - C ++中的意外无限循环
- android - 我可以在 Kotlin 中使用 MutableLiveData 直接实例化用户对象吗?
- asp.net - 如何在sql参数列表中使用forloop?
- javascript - 如何知道浏览器限制了第 3 方图像的显示?
- flutter - 无法识别样式参数
- python - 在python中识别子和父组合组
- asp.net-core - 如何通过 DI 将经过身份验证的用户 ID 传递给 asp.net 核心中的类库项目?
- git - 无法重写分支:您有未暂存的更改
- php - 将 JSON 数据从视图中的 JavaScript 传递到 laravel 中的控制器
- python - 如何在没有 NumPy 的情况下将矩阵的行转换为 Python 中的列?