小编Fil*_*ies的帖子

根据聚合创建大小均匀的组

可能是一个新手问题,但我希望根据总数据库大小将我们的服务器库存分成几个大小相等的组,并且难以弄清楚如何对它们进行分组.我认为NTILE可能会起作用,但我无法将我的头围绕均匀地分开.我下面的例子就是随机排序服务器.我希望结果是3组相当均匀的大小(显然不是很准确).

使用SQL Server 2012.任何帮助表示赞赏.谢谢.

declare @Servers table (ServerName sysname, TotalSizeGB decimal (12,2))
insert into @Servers values
('Server1',123.45),
('Server2',234.56),
('Server3',345.67),
('Server4',456.78),
('Server5',567.89),
('Server6',678.90),
('Server7',789.01),
('Server8',890.12),
('Server9',901.23),
('Server10',1023.35)

select GroupNumber, sum(TotalSizeGB) as TotalSizeGB
from (
     select ServerName, sum(TotalSizeGB) as TotalSizeGB, ntile(3) over (order by newid()) as GroupNumber
     from (
          select ServerName, TotalSizeGB from @Servers
          ) x 
     group by ServerName
     ) y
group by GroupNumber
Run Code Online (Sandbox Code Playgroud)

这里的预期产量将是三组,每组约2000GB.我希望它不会准确,但至少接近.如果按服务器分组,它可能如下所示:

ServerName  TotalSizeGB GroupNumber
Server10    1023.35 1  
Server1 123.45  1
Server5 567.89  1
Server3 345.67  1
Server4 456.78 …
Run Code Online (Sandbox Code Playgroud)

sql-server sql-server-2012

6
推荐指数
1
解决办法
2027
查看次数

标签 统计

sql-server ×1

sql-server-2012 ×1