有一张表 是记录人员登录次数 登录一次就在表中插入一条记录 表结构是 人员id 人员名称 人员部门 登录时间
现在要按照人员的部门统计某一天内人员的登录情况
用sql应该怎么写?按照下面格式显示部门1  登录人员总数
部门2  登录人员总数
.......

解决方案 »

  1.   

    select 人员部门,count(*) from 表名 group by 人员部门
      

  2.   

    哦,忘加时间了,呵呵
    select 人员部门,count(*) 
        from 表名 
         where to_char(登录时间,'yyyy-mm-dd')='时间条件'
         group by 人员部门
      

  3.   

    谢谢这样可以 不过还有一个问题 如果某一个部门没有人登录过 这个部门就不在group by的范围内了 如果还有一张部门表
    怎样能按照所有的部门显示呢 如果部门没有人登录 能否显示0呢  
      

  4.   


    --外连接
    select b.部门名称,count(a.人员ID)
    from 部门表 b LEFT join 人员表 a
    on b.部门名称=a.部门名称
    where 登录日期=某日期
    group by b.部门名称
      

  5.   

    select b.部门,(
    select count(1) from  人员表 
    where 登录时间=某时间
    and 部门=b.部门
    )
    from 部门表 b
      

  6.   

    select tb1.部门,nvl(tb2.num,0) from 部门表 tb1,(select 部门,count(*) num from tb where 登录时间='' group by 部门) tb2 where tb1.部门(+)=tb2.部门
     某位大侠发给我的  测试通过  也谢谢大家