如何写SQL语句,江湖!!!!
统计任务完成情况:
有三张表
1.Tb_Users(用户)
KeyField Name属性NOT NULL默认值字段说明
●UserIdint ○用户ID(自动生成)
UserCountvarchar(50)○用户帐号
UserNamevarchar(50)○用户姓名
UserPwdvarchar(20)○登陆密码
RoleIdint○外键用户角色(角色表外键),(0:系统管理员 1:主管 2:管理员)
StateIdint○外键用户状态(0:正常 1:禁用)
2.Tb_Task(任务表)
●TaskIdint○任务ID(自动生成)
TaskNamevarchar(50)○任务名称
TaskContentvarchar(max)○任务内容
TaskDemandvarchar(max)○任务要求
CreatedTimedatetime○下达时间
EndTimedatetime○截止时间
DelayTimedatetime延至期限
Allotervarchar(50)○任务分配人(默认是主管)
UserIdint○外键 任务执行人(User表)
FinishTimedatatime○实际完成时间
TaskStatusIdint○外键 任务状态(任务状态表)(未执行、执行中、已完成、未完成 、延时)
Remarkvarchar(max)备注
3.Tb_TaskCheck(任务检查表)
KeyField Name属性NOT NULL默认值字段说明
●TaskCheckIdint○ID(自动生成)
TaskIdint○ 任务ID
Checkervarchar(50)○任务检查人(默认为主管)
CheckStatusNamevarchar(10)○检查状态(未检查、已检查)
CheckResultvarchar(10)○检查结果(合格、整改)
CheckSuggestionvarchar(max)检查意见
任务执行人 分配任务数 完成任务数 合格任务数 ?(不会) 合格率?(不会)
1 6 1
2 8 5
3 5 2
4 5 0
5 1 0
6 1 0
我只会统计前3个,代码如下:
select UserId as 任务执行人 ,COUNT(TaskId) as 分配任务数
,SUM(CASE WHEN TaskStatusId=3 THEN 1 ELSE 0 END) AS 完成任务数
from Tb_Task group by UserId
合格任务数 貌似要统计任务检查表里面的select TaskId,SUM(CASE WHEN CheckResult='合格' THEN 1 ELSE 0 END) AS 合格任务数
from Tb_TaskCheck group by TaskId
合格率 = 完成任务数/分配任务数 不知道该用什么函数实现 ,
不知道如何写SQL语句,才能实现以上页面????????????求高人相助!!!!!!
[解决办法]
合格率=ltrim(cast(SUM(CASE WHEN TaskStatusId=3 THEN 1 ELSE 0 END)/COUNT(TaskId) as dec(18,2)))+'%'
[解决办法]
sum聚合case判断