这样难的sql怎么写?

showflaasp 2006-06-29 10:23:04
问各位一个sql语句的问题:
我有一个表的数据:
日期 人数
2005-05-06 10
2006-05-07 20
2006-05-08 30

我要想得到这个结果,怎么写?
日期 人数 累加
2005-05-06 10 10
2006-05-07 20 30
2006-05-08 30 60

由于我数据量是上千万的,怎么考虑性能?
...全文
684 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
jinxin19831117 2006-12-13
  • 打赏
  • 举报
回复
conanfans(高山)
正解
badboy213 2006-12-06
  • 打赏
  • 举报
回复
conanfans(高山) 用OLAP函数 为正解
huangbznet 2006-10-18
  • 打赏
  • 举报
回复
我不会,只能帮顶了,我也有个DB2的问题,请教各位,
declare @sql varchar(8000)
set @sql = 'select name,'
select @sql = @sql + 'sum(case subject when '''+subject+'''
then source else 0 end) as '''+subject+''','
from (select distinct subject from test) as a
select @sql = left(@sql,len(@sql)-1) + ' from test group by name'
exec(@sql)
go
象这个用DB2的语句来写,该怎么写,LZ知不知道啊
zhuxincheng 2006-10-15
  • 打赏
  • 举报
回复
select t2.dates as '日期',t2.num as '人数', (select sum(t1.num) from testsum t1 where t1.dates<=t2.dates) as '累加' from testsum t2;

关于性能可以在人数上建立索引
conanfans 2006-08-01
  • 打赏
  • 举报
回复
用OLAP函数。
select date, sales,
sum(sales) over (order by date) as cume_sum,
count(*) over (order by date) as setcount
from sales
where year(date) = 2000;
DATE SALES CUME_SUM SETCOUNT
---------- ------------ ------------ ---------
01/01/2000 968871.12 968871.12 1
02/01/2000 80050.05 1048921.17 2
03/01/2000 757866.14 1806787.31 3
04/01/2000 58748.13 1865535.44 4
05/01/2000 40711.69 1906247.13 5
06/01/2000 241187.78 2147434.91 6
07/01/2000 954924.16 3102359.07 7
08/01/2000 502822.96 3605182.03 8
09/01/2000 97201.45 3702383.48 9
10/01/2000 853999.45 4556382.93 10
11/01/2000 358775.59 4915158.52 11
12/01/2000 437513.35 5352671.87 12
partnersoft 2006-07-25
  • 打赏
  • 举报
回复
还可以实现变态的top n,不用游标,那样会死人
partnersoft 2006-07-25
  • 打赏
  • 举报
回复
有个超级简单的函数,你到http://www.partner-soft.com/bbs上去问,保证有人回答
bflovesnow 2006-07-03
  • 打赏
  • 举报
回复
上千万的可以,但总不可能一下子给客户端显示千万条吧??
显示多少就由你来定,按照楼上的写法就行了
子陌红尘 2006-06-30
  • 打赏
  • 举报
回复
游标遍历?
子陌红尘 2006-06-30
  • 打赏
  • 举报
回复
select *,(select sum(人数) from 表 where 日期<=t.日期) from 表 t

5,889

社区成员

发帖
与我相关
我的任务
社区描述
IBM DB2 是美国IBM公司开发的一套关系型数据库管理系统,它主要的运行环境为UNIX(包括IBM自家的AIX)、Linux、IBM i(旧称OS/400)、z/OS,以及Windows服务器版本
社区管理员
  • DB2
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧