Sql SUM在范围内

时间:2013-01-10 01:07:37

标签: sql oracle

我有数据,看起来像这样。为简单起见,我将date显示为“日期”+数字

Date     ID
-----------
Day1     A
Day1     B
Day1     C  
Day2     A
Day2     A
Day3     A
Day4     B
Day5     A

我想计算每个date中有多少个ID。但是,每个日期都需要包含以前的所有日期计数。

含义,如果用户从第3天到第5天选择范围。

Date    Count
Day3    Day1+Day2+Day3
Day4    Day1+Day2+Day3+Day4
Day5    Day1+Day2+Day3+Day4+Day5

我能想到的是使用'UNION'每天添加3个查询。

2 个答案:

答案 0 :(得分:3)

您正在寻找累积总和,Oracle确实支持。

试试这个:

select date, sum(daycnt) over (order by date)
from (select date, count(*) as daycnt
      from t
      where date between DAY_START and DAY_END
      group by t
     ) t

答案 1 :(得分:0)

检查这些东西

select Dt, count(*)
from
(
 select t2.Date Dt
 from t t1, (select Date from t group by Date) t2
 where t1.Date < t2.Date
)
group by Dt