连续最长加班天数

SQL总结:

  1.连续最长加班天数

    原表数据如下:(id:加班者id,通俗就是谁加班。日期:哪天加的班。flag:是否加班标志,1代表这个人在这个日期加班,0代表没加班)

id 日期 flag
1 20130101 1
1 20130102 1
1 20130103 0
1 20130104 1
1 20130105 1
1 20130106 1

  得出结果集应是:

ID start_date end_date days
1 20130104 20130106 3

SQLSERVER数据库测试过的脚本:

  

with t1 as (
select id,date-row_number()over(partition by id order by date) rn,date
from dbo.test_overtime where flag=1),
t2 as (
select id,max(date) end_date,min(date) start_date,count(1)lianxu from t1 group by rn,id
)

select * from t2 where lianxu in (select max(lianxu) from t2 group by id)

2..部门员工的累加出账

       原始数据如下:

部门ID 员工ID 年月 出账数目
1 21 199601 3000
1 21 199602 4000
1 21 199603 4000
1 21 199604 5000
2 31 199601 1000
2 31 199602 2000
2 31 199603 3000

      结果表:

部门 年月 出账
1 199601 3000
1 199602 7000
1 199603 11000
1 199604 16000
1 199601 1000
1 199602 3000
1 199603 6000

脚本:

       

SELECT DEP,YEARDATE,

SUM(CHUZHANG) OVER(PARTITION BY DEP order by YEARDATE RANGE BETWEEN UNBOUNDed preceding and preceding )
FROM TEST

 

posted @ 2016-03-10 15:58  霍丽  阅读(344)  评论(0)    收藏  举报