聚合函数小记

今天下午要写这样的一个脚本,统计最近三个月工号登录情况,要有总工号数,最近三个月登陆过的工号数,以及登陆率,时间函数我首先想到了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;

转载于:https://www.cnblogs.com/chen1388/archive/2010/09/25/1834596.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值