2014-11-03 125 views
0

我有一个包含2列的表格。 {UserId,Date}。这个表格中有N行,我想把它们分成M行,每行都是N/M。 UserId和Date可以在表中的多个行上重复。每个垃圾箱应按照顺序排列不重叠的用户ID。如何使用SQL查询查找等大小的分箱的最小值和最大值

为例如:如果表具有100行和每个区间应具有尺寸25那么仓范围如下

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

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

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

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

如何可以写一个SQL询问获得这些垃圾桶范围?

+0

比方说,有12行,每个bin得到3个。也许你可以提供一个数据集和一个相应的结果集。 – Strawberry 2014-11-03 21:33:53

回答

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”号码,然后你可以用它来分组,但是你希望。