请假统计SQL
请假里有:请假类别,开始时间、结束时间要求统计:在有人请假的日期中按照日期分组,统计出各个请假类别的人数张三事假2014.07.212014.07.23李四事假2014....
请假里有:请假类别,开始时间、结束时间
要求统计:在有人请假的日期中按照日期分组,统计出各个请假类别的人数
张三 事假 2014.07.21 2014.07.23
李四 事假 2014.07.22 2014.07.24
王武 病假 2014.07.23 2014.07.24
时间(从请假开始结束时间得出) 事假 病假
2014.07.21 1人 0人
2014.07.22 2人 0人
2014.07.23 2人 1人
2014.07.24 1人 1人 展开
要求统计:在有人请假的日期中按照日期分组,统计出各个请假类别的人数
张三 事假 2014.07.21 2014.07.23
李四 事假 2014.07.22 2014.07.24
王武 病假 2014.07.23 2014.07.24
时间(从请假开始结束时间得出) 事假 病假
2014.07.21 1人 0人
2014.07.22 2人 0人
2014.07.23 2人 1人
2014.07.24 1人 1人 展开
3个回答
展开全部
没说什么数据库,sqlserver为例
创建测试表
create table test
(姓名 varchar(10),
事由 varchar(10),
开始时间 datetime,
结束时间 datetime)
insert into test values ('张三','事假','2014-07-21','2014-07-23')
insert into test values ('李四','事假','2014-07-22','2014-07-24')
insert into test values ('王武','病假','2014-07-23','2014-07-24')
执行
select t.时间,
sum(case when t.事由='病假' then 1 else 0 end) 病假,
sum(case when t.事由='事假' then 1 else 0 end) 事假
from
(select a.姓名,a.事由,a.开始时间+b.number 时间
from test a,
(select number from master..spt_values
where type='P' and number<=(select max(DATEDIFF(DAY,开始时间,结束时间)) from test)) b
where DATEDIFF(DAY,a.开始时间,a.结束时间)>=b.number) t
group by t.时间
结果
展开全部
SELECT 请假日期,请假类别,count(*)
FROM 员工表 A,请假表 B
WHERE A.请假日期 >=B.开始日期 AND A.请假日期 <=B.结束日期
GROUP BY A.日期,B.请假类别;
张三请假如果10天,应该对时间有个遍历,查询每一天的请假人数,这个最好java,php完成,对每一天请假的运用上面的查询,依次输出
FROM 员工表 A,请假表 B
WHERE A.请假日期 >=B.开始日期 AND A.请假日期 <=B.结束日期
GROUP BY A.日期,B.请假类别;
张三请假如果10天,应该对时间有个遍历,查询每一天的请假人数,这个最好java,php完成,对每一天请假的运用上面的查询,依次输出
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
select 日期,请假类别,count(*)
from 表
group by 日期,请假类别
from 表
group by 日期,请假类别
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询