日期:2014-05-17  浏览次数:20570 次

请教一个平均分配的算法
类似网上答题阅卷

比如,有759个考生提交了答卷,将这些答卷随机平均分配给给6个老师阅卷,这段sql代码如何写?或者,如何计算?
当然,可能某个老师的卷子要比其他老师多一点,或少一点。
多谢。

------解决方案--------------------
NTILE (integer_expression) OVER ( [ <partition_by_clause> ] < order_by_clause > )  能满足你的需求
------解决方案--------------------
WITH a1 AS
(
SELECT id,name,ROW_NUMBER() OVER(ORDER BY id) re FROM tbGroup
)
,a2 AS
(
SELECT ntile(@i) over(order by newid()) re,id FROM tbItem
)
,a3 AS
(
SELECT a.id,b.id AS groupid
FROM a2 a
INNER JOIN a1 b ON a.re=b.re
)
UPDATE tbItem SET groupid=a3.groupid
FROM a3
WHERE tbItem.id=a3.id