如何使用SQL查询查找大小相等的bin的Min和Max值

时间:2014-11-03 21:29:09

标签: sql sql-server

我有一个包含2列的表格。 {UserId,Date}。这个表说N行,我想把它们分成大小为M行的箱子,所以总共有N / M个箱子。 UserId和Date可以在表中的多行上重复。每个bin应按顺序具有不重叠的用户ID。

例如:如果表有100行,每个bin的大小应为25,则bin范围如下

bin 1:用户1 - 用户20(25行)

bin 2:用户21 - 用户80(25行)

bin 3:用户81-用户95(25行)

bin 4:用户96-用户100(25行)

如何编写SQL查询以获取这些bin范围?

1 个答案:

答案 0 :(得分:1)

听起来我觉得你正在寻找NTILE功能:http://msdn.microsoft.com/en-us/library/ms175126.aspx

在这种情况下,选择部分查询可能看起来像SELECT UserId, NTILE(4) OVER (ORDER BY UserId ASC) AS Bin FROM ...

您可以根据您想要的垃圾箱数量修改上面NTILE旁边的数字4。

这将为您提供每行的“Bin”编号,然后您可以根据需要对其进行分组。