如何根据排序平均分割表格?这是我正在谈论的模拟脚本:
编辑:我想将表平均分成4个不同的组。 (或任意数量的团体)。重要的是,每个群体都有相当高的和低的余额。
DECLARE @WorkList TABLE
(
account_number VARCHAR(10),
balance MONEY,
assigned_to INT
)
DECLARE @Loop INT
DECLARE @TotalPartsToSplitEvenly INT
SET @TotalPartsToSplitEvenly = 4
SET @Loop = 1
WHILE @Loop < 50
BEGIN
INSERT INTO @WorkList (account_number, balance, assigned_to)
VALUES ((@Loop * 5) * 1234, @Loop * 1000, NULL)
SET @Loop = @Loop + 1
END
SELECT *
FROM @WorkList
ORDER BY balance DESC
我想平均分割结果集,以便每个人都能获得公平的平衡份额。
account_number balance assigned_to
-------------- --------------------- -----------
302330 49000.00 1
296160 48000.00 2
289990 47000.00 3
283820 46000.00 4
277650 45000.00 1
271480 44000.00 2
265310 43000.00 3
259140 42000.00 4
252970 41000.00 1
246800 40000.00 2
240630 39000.00 3
NTILE
不起作用。我没有想法。
答案 0 :(得分:1)
您似乎想要row_number()
mod 4:
select wl.*,
(1 + (row_number() over (order by balance desc) - 1) % 4) as assigned_to
from @worklist wl;