我需要將記錄劃分成組,每組最多有n個元素,我需要額外的列作爲某種計數器,當它達到一定數量的行時將增加1。 我不講英語,所以我建立了示例代碼來顯示我擁有的數據和我需要的結果。每個組最大元素的組結果
這裏是sqlfiddle:http://sqlfiddle.com/#!3/c9cf5/1
這裏是sqlfiddle代碼:
CREATE TABLE tab1
(
id int
);
INSERT INTO tab1 (id) VALUES (1)
INSERT INTO tab1 (id) VALUES (2)
INSERT INTO tab1 (id) VALUES (3)
INSERT INTO tab1 (id) VALUES (4)
INSERT INTO tab1 (id) VALUES (5)
INSERT INTO tab1 (id) VALUES (6)
INSERT INTO tab1 (id) VALUES (7)
INSERT INTO tab1 (id) VALUES (8)
INSERT INTO tab1 (id) VALUES (9)
INSERT INTO tab1 (id) VALUES (10)
INSERT INTO tab1 (id) VALUES (11)
INSERT INTO tab1 (id) VALUES (12)
INSERT INTO tab1 (id) VALUES (13)
INSERT INTO tab1 (id) VALUES (14)
INSERT INTO tab1 (id) VALUES (15)
INSERT INTO tab1 (id) VALUES (16)
INSERT INTO tab1 (id) VALUES (17)
INSERT INTO tab1 (id) VALUES (18)
INSERT INTO tab1 (id) VALUES (18)
INSERT INTO tab1 (id) VALUES (20)
SELECT id,
NTILE(4) OVER(ORDER BY id DESC) AS X
from tab1
我與數據表看起來像這樣:
id
--
1
2
3
4
5
6
7
8
9
10
,我需要結果的外觀看起來像這樣:
id | group
--
1 | 1
2 | 1
3 | 1
4 | 1
5 | 2
6 | 2
7 | 2
8 | 2
9 | 3
10 | 3
在上面的例子中,我想將所有記錄分組爲包含最多4個元素的組,記錄1-4位於組1中,記錄5-8位於組2中,記錄9-10位於第三位。
可能有構建功能可以做到這一點,但由於我的英語技能,我無法找到它。
我試過計算表中的所有元素,並將其除以數字或元素,然後在NTILE中使用它,但這樣我得到的平等組並不是我需要的結果。
它可以通過NTILE實現那麼你的主要問題在於什麼? – mohan111