在SQL中将大数据集划分为相等的列表

时间:2013-10-03 12:40:49

标签: sql sql-server

我有2个SQL数据库,1个是代理列表,另一个是客户端。

我想在我拥有的代理商数量中随机拆分客户数据库。即 如果我有10个代理商和50 000个客户端,则每个代理商必须根据可用客户端数量获得相同的唯一列表。 (10个完全随机选择的5000个客户名单,没有任何重复)

我仍然是SQL的新手,并且已经尝试根据我拥有的代理数量将ID号分配给客户端列表,然后像这样加入它们。我想尝试一些比随机1,2,3更随意的东西,并加入它们就像

我想在SQL或Excel中执行此操作。

请帮助......

2 个答案:

答案 0 :(得分:2)

SELECT *, ROW_NUMBER OVER (ORDER BY NEWID()) % 10 as AgentIndex
FROM Clients

AgentIndex将在0到9的范围内。每个代理将有5000个客户端与之关联。

答案 1 :(得分:0)

使用T-SQL,您可以使用NEWID()为每一行生成随机值。然后,您可以通过此值对记录集进行排序,并使用SELECT TOP获取前5000个元素,依此类推。

SELECT *, NEWID() AS RandomNumber INTO #MyTempTable FROM MyTable

SELECT TOP 5000 * FROM #MyTempTable ORDER BY RandomNumber