导航
  • 主页
  • 基础类
  • 应用实例
  • 新技术前沿

求2个SQL语句,马上给分,谢谢

jeffwangxm 2006-01-19 11:42:29
我想做个工作效率分析

1 、 有一工作记录表,表内有字段 :姓名,开始工作时间,结束工作时间,工作量
每人一天内允许工作多次,每次工作时间不限,每次工作效率可不同。
现要统计每人的最快工作效率(按分钟)。
再按人统计每人所有工作的平均效率。求SQL语句

2、现用比较复杂的程序按人统计出平均工作效率表:姓名,总耗时,总工作量,平均工作效率
目测平均工作效率在0---2500之间
求SQL语句,按0-100,100-200,200-300......工作效率统计每个工作效率段内的人数

马上给分


...全文
76 点赞 收藏 9
写回复
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
白发程序猿 2006-01-19
写错了,应该是
1、select 姓名,max(工作量/datediff(n,开始工作时间,结束工作时间)) as 最快效率 from 工作记录表 group by 姓名
select 姓名,sum(工作量)/sum(工作时间) as 平均效率 from (select 姓名,工作量,datediff(n,开始工作时间,结束工作时间)) as 工作时间 from 工作记录表) t group by 姓名
2、
select 平均效率,count(人数) as 人数 from
(select case when 平均效率 between 0 and 100 then '0-100' when 平均效率 between 100 and 200 then '100-200' when 平均效率 between 200 and 300 then '200-300' when 平均效率 between 300 and 400 then '300-400' else '400以上' end as 平均效率,'1' as 人数 from
(select 姓名,sum(工作时间) as 总耗时,sum(工作量) as 总工作量,sum(工作量)/sum(工作时间) as 平均效率 from
(select 姓名,工作量,datediff(n,开始工作时间,结束工作时间)) as 工作时间 from 工作记录表) t group by 姓名) t1) t2
group by 平均效率
我这里只写到400,如还要多,就依序增加就行了
回复
白发程序猿 2006-01-19
1、select 姓名,min(工作量/datediff(n,开始工作时间,结束工作时间)) as 最快效率 from 工作记录表 group by 姓名
select 姓名,sum(工作量)/sum(工作时间) as 平均效率 from (select 姓名,工作量,datediff(n,开始工作时间,结束工作时间)) as 工作时间 from 工作记录表) t group by 姓名
2、
select 平均效率,count(人数) as 人数 from
(select case when 平均效率 between 0 and 100 then '0-100' when 平均效率 between 100 and 200 then '100-200' when 平均效率 between 200 and 300 then '200-300' when 平均效率 between 300 and 400 then '300-400' else '400以上' end as 平均效率,'1' as 人数 from
(select 姓名,sum(工作时间) as 总耗时,sum(工作量) as 总工作量,sum(工作量)/sum(工作时间) as 平均效率 from
(select 姓名,工作量,datediff(n,开始工作时间,结束工作时间)) as 工作时间 from 工作记录表) t group by 姓名) t1) t2
group by 平均效率
我这里只写到400,如还要多,就依序增加就行了
回复
-狙击手- 2006-01-19
select 姓名,
sum(datediff(mi,开始工作时间,结束工作时间)) as sumtime,
sum(工作量) as sumwork,
avg(sum(datediff(mi,开始工作时间,结束工作时间))/sum(工作量)) as avgwork
into #tmp
from 工作记录表
group by 姓名
select
[0-100]=(select sum(case when avgwork between 0 and 100 then 1 end) from #temp),
[100-200]=...
....
from #tmp
回复
jeffwangxm 2006-01-19
工作记录表,:姓名(char型),开始工作时间(datetime),结束工作时间(datetime),工作量(int)

平均工作效率表:姓名(char型),总耗时(datetime),总工作量(int),平均工作效率(int)
回复
$扫地僧$ 2006-01-19
sorry:
1.
select 姓名,max(工作量/datediff(mi,开始工作时间,结束工作时间)),avg(工作量/datediff(mi,开始工作时间,结束工作时间)) from 工作记录表
group by 姓名
回复
$扫地僧$ 2006-01-19
1.
select 姓名,max(工作量/datediff(mm,开始工作时间,结束工作时间)),avg(工作量/datediff(mm,开始工作时间,结束工作时间)) from 工作记录表
group by 姓名
回复
天地客人 2006-01-19
请列出数据类型!!!


=========================================================
我的回复,尽可能为你分忧解难
BLOG:blog.csdn.net/softj --欢迎光临,有更多信息等着你!
QQ高级群:5063844专研数据库 --大家进来聊一聊!
MSN:softj@msn.com --这不常用!
Mail:zj.wj@163.com --有什么问题可以和我来EMAIL!
=========================================================
回复
yangyangxie 2006-01-19
study
回复
flyeq008 2006-01-19
学习
回复
发动态
发帖子
MS-SQL Server
创建于2007-09-28

3.2w+

社区成员

MS-SQL Server相关内容讨论专区
申请成为版主
社区公告
暂无公告