gpt4 book ai didi

sql - 将一组值分成 5 组,每组应该有 sum(count) 均匀

转载 作者:行者123 更新时间:2023-12-02 01:07:18 25 4
gpt4 key购买 nike

SQL Server 将一组值分成 5 组,每组的 sum(count) 应该均匀分布。

表仅包含 2 列 ridcount

create table t1(rid int, count int) 

insert into t1
values (1, 4567), (2, 3256), (3, 5678), (4, 934),
(5, 1099), (6, 3990), (7, 780), (8, 6784),
(9, 7854), (10, 435), (11, 3455), (12, 4897),
(13, 8849), (14, 1019), (15, 2387)

实际表是

rid count
---------
1 4567
2 3256
3 5678
4 934
5 1099
6 3990
7 780
8 6784
9 7854
10 435
11 3455
12 4897
13 8849
14 1019
15 2387

我需要将值动态分成5组,每组应该sum(count)均匀分布

列的总和等于55500。我需要将总和除以55500/5=11100。我们需要将值分成 5 组,每组应该有 sum(count) 均匀分布,相当于 11110(大约)

最佳答案

我将从 5 个随机选择的组开始:

select t.*,
ntile(5) over (order by newid()) as grp
from t;

总和应该非常接近。如果您有很多记录并且计数分布合理,那么第 n 个样本通常会做得很好:

select t.*,
(row_number() over (order by count) % 5) as grp
from t;

如果您遇到的情况是count 的大小非常不同并且您需要最佳解决方案,那么您就会遇到难题。

关于sql - 将一组值分成 5 组,每组应该有 sum(count) 均匀,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46992210/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com