
sql 以行数分组
如题。我想用指定行数的记录分组。不知道SQLSERVER2005怎么实现例如:tidnum1102638415863我想要的结果是:(以每三行分组)num2412以两行分...
如题。我想用指定行数的记录分组。不知道SQL SERVER 2005 怎么实现
例如:
t
id num
1 10
2 6
3 8
4 1
5 8
6 3
我想要的结果是:(以每三行分组)
num
24
12
以两行分组
num
16
9
11 展开
例如:
t
id num
1 10
2 6
3 8
4 1
5 8
6 3
我想要的结果是:(以每三行分组)
num
24
12
以两行分组
num
16
9
11 展开
2个回答
展开全部
以每3行分组
select 组号=ceiling(row_number()over(order by id )/3),求和=sum(num)
from t
group by ceiling(row_number()over(order by id )/3)
以每2行分组
select 组号=ceiling(row_number()over(order by id )/2),求和=sum(num)
from t
group by ceiling(row_number()over(order by id )/2)
select 组号=ceiling(row_number()over(order by id )/3),求和=sum(num)
from t
group by ceiling(row_number()over(order by id )/3)
以每2行分组
select 组号=ceiling(row_number()over(order by id )/2),求和=sum(num)
from t
group by ceiling(row_number()over(order by id )/2)
追问
我测试了这个基本符合了我想要的结果。我想问问。如果ID不连续怎么办?有时候insert 错误会导致下次插入的记录的ID和上一个记录不是连续的。不知道你怎么解决怎个情况
展开全部
使用ntile实现
select sum(num) num from
( select ntile(2) over ( order by id ) n_id ,* from 表 ) a
group by n_id
select sum(num) num from
( select ntile(3) over ( order by id ) n_id ,* from 表 ) a
group by n_id
select sum(num) num from
( select ntile(2) over ( order by id ) n_id ,* from 表 ) a
group by n_id
select sum(num) num from
( select ntile(3) over ( order by id ) n_id ,* from 表 ) a
group by n_id
追问
这位大哥可能理解错我的意思了。用 ntile(X)得到X个分组。我想要的是以指定X行记录分成一个分组。最后按记录数不同得到不同个数的分组。每个分组的count(*)都是X,除非最后一不足才能小于X
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |