今天下午要写这样的一个脚本,统计最近三个月工号登录情况,要有总工号数,最近三个月登陆过的工号数,以及登陆率,时间函数我首先想到了add_moths这个函数,这没问题,统计要用到聚合函数中的count函数这个也没有问题,问题是我在想把总工号数和登陆过的工号数一起查出来的时候出了问题见下面错误写法,提示字段不是分组函数,后来在查询结果集中加了一个select 达到了效果

和聚合函数一起查询出来的字段,那么是分组字段,那么是聚合函数计算用的字段,其他字段则报错
1。错误写法:这个样会报第一的查询不是分组字段的错误
select  (select count(1) from tb_sm_sysstaff where staff_status='S0A' ) 总工号数
          count(distinct t.staff_id) 近三个月登陆数
from tb_sm_loginsess t  where t.login_time >= add_months(sysdate, -3)
2。正确写法
---现网最近三个月登陆情况,无效工号不在计算范围内
 select  (select count(1) from tb_sm_sysstaff where staff_status='S0A' ) 总工号数,
          tb.rn 近三个月登陆数,
          trunc(tb.rn/(select count(1) from tb_sm_sysstaff where staff_status='S0A' )*100,2)||'%' 近三个月登陆率
 from(select count(distinct t.staff_id) rn from tb_sm_loginsess t  where t.login_time >= add_months(sysdate, -3)) tb;

posted on 2010-09-25 15:03  新小白龙  阅读(329)  评论(0编辑  收藏  举报