2014-11-03 83 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」號碼,然後你可以用它來分組,但是你希望。