3

从 EMPLOYEE 表中,我想对记录的数量(雇用的员工)进行分组,并且还要每天运行 TOTAL。输入的格式是这样的:

rownum Hired_date_time
1 2012 年 1 月 10 日 11:00
2 2012 年 1 月 10 日 13:00
3 2012 年 11 月 20 日 10:00
4 2012 年 11 月 20 日 15:00
5 2012 年 11 月 20 日 16:00
6 2012 年 12 月 30 日 1:00

所需的输出:

Hired_date.......Hired_per_day............TOTAL_number_of_employees
2012 年 1 月 10 日 ....................2 ........2
2012 年 11 月 20 日 ....................3 ..................5
2012 年 12 月 30 日 ....................1 ........ 6

每天分组没有问题:

select  trunc(Hired_date_time) as "Hired_date" , 
        count(*) as "Hired_per_day"
from employee
group by trunc(Hired_date_time)
order by trunc(Hired_date_time);

问题:如何使用窗口函数获得运行总计(在最后一列)

4

2 回答 2

8
select trunc(hired), 
       count(*) hired_today,       
       sum(count(*)) over (order by trunc(hired)) as running_total
from emp
group by trunc(hired)

http://sqlfiddle.com/#!4/4bd36/9

于 2012-12-04T12:35:02.050 回答
2
select trunc(hire_date), 
       count(*) over (partition by trunc(hire_date)) as hired_per_day,
       count(*) over (order by hire_date) as total_number_of_employees
from employee
order by trunc(hire_date)
于 2012-12-04T12:30:03.090 回答