+ -
当前位置:首页 → 问答吧 → 请教asp可以选出一个记录集,然后再通过这个记录集进行筛选做统计吗?

请教asp可以选出一个记录集,然后再通过这个记录集进行筛选做统计吗?

时间:2011-09-22

来源:互联网

如一个工作任务表work的字段为:
部门 任务名称 是否完成 任务分配时间 ……
生产1部 111 是 2011-9-21
生产1部 222 否 2011-9-21
生产2部 333 是 2011-9-21
生产2部 444 是 2011-9-21
……
   
现在想做的是:
按时间段统计各个部门的任务总数和完成任务的数量

自己想的是一个个的查询可以实现,但是部门多了,就得很多次查询,我想这样不是很好的方法

能不能只查询一次数据库,然后在这个结果集里面查询我要的统计结果,比如:
select * from work where 任务分配时间 between '2011-01-01' and '2011-09-21'
得到这个结果集,然后再通过这个结果集来查询,如:
select count(部门) from 上次的结果集 where 部门='生产1部 ' and 是否完成='是'




最后得到统计结果:
  2011-01-01至2011-09-21
  部门 分配任务数 完成任务数 完成率
生产1部 2 1 50%
生产2部 2 2 100%
生产3部
……



上次那样的在结果集中再查询,是个人想法,或者这样的统计有没有其他好的方法?

作者: KeepOn   发布时间: 2011-09-22

晕了,这笔这么麻烦?一个SQL不搞定么?
select count(部门) from work where 任务分配时间 between '2011-01-01' and '2011-09-21' and 是否完成='是' group by 部门

作者: chinmo   发布时间: 2011-09-22

group by

作者: beyond_me21   发布时间: 2011-09-22

谢谢上面的回复
group by怎么把总任务量和完成的任务量都列出来呢?

作者: KeepOn   发布时间: 2011-09-22

select 部门,sum(分配任务数) as 分配任务数,sum(完成任务数) as 完成任务数 from work where 任务分配时间 between '2011-01-01' and '2011-09-21' group by 部门

作者: beyond_me21   发布时间: 2011-09-22

谢谢beyond_me21,
还有一个问题,我的部门是存的id,名称在另外一个表,怎么用上面那句sql把部门名称直接列出来?

作者: KeepOn   发布时间: 2011-09-22

用左联left join
select b.部门名称,sum(a.分配任务数) as 分配任务数 from work as a left join 部门 as b on a.部门id=b.id 
where a.任务分配时间 between '2011-01-01' and '2011-09-21' group by a.部门id
引用 5 楼 keepon 的回复:

谢谢beyond_me21,
还有一个问题,我的部门是存的id,名称在另外一个表,怎么用上面那句sql把部门名称直接列出来?

作者: beyond_me21   发布时间: 2011-09-22