表结构
-----------
data income
01月 100
02月 300
03月 500
期望返回结果
-----------
data result
01月 100
02月 400
03月 900
说明:当前月结果=当前月利润+之间月利润
SQL:select date,(select sum(income) from tab where data<=tt.date) as result from tab as tt
最后,感谢.liujia MM的提问和翼帆都司的解答。
——————————————————————————————————
有一个表visitList(用户页面访问清单表)
id(int) visitPage user viDate(dateTime)
1 | a.asp | 张三 | 2008-03-09 |
2 | a.asp | 张三 | 2008-03-09 |
3 | a.asp | 张三 | 2008-03-10 |
4 | b.asp | 张三 | 2008-03-09 |
5 | a.asp | 李四 | 2008-03-09 |
6 | a.asp | 李四 | 2008-03-09 |
统计:
1)sql_1:如果根据用户统计他们各自访问页面的次数,SQL就是这样写的:
select user,count(visitPage) as pageCount from visitList group by user
访问次数统计结果:
张三:4
李四:2
2)sql_2:如果在sql_1的基础上,相同页面只计算一次,SQL就是这样写的:
select user,count( distinct visitPage) as pageCount from visitList group by user
访问次数统计结果:
张三:2
李四:1
3)sql_3:如果在sql_2的基础上,再根据viDate这个日期进行统计,也就说,我要得到如下访问次数统计结果:
张三:3(说明:id=1与id=2是相同页面且是同一天,计算1次;id=3虽是重复页面,但是是另一天,所以也要计算1次,id=4是另一新的页面计算1次,即总共合计3次)
李四:1
SELECT [USER],COUNT(*) FROM (
SELECT [USER],viDate,visitPage,COUNT(DISTINCT visitPage) AS CNT FROM visitList GROUP BY [USER],viDate,visitPage
) AS A GROUP BY [USER] ORDER BY [USER] DESC