在一张表存有打卡时间,怎么在一条SQL语句中实现统计迟到、不迟到的人数,请会的人指点一下,谢谢!
表结构大致如下:id,num,name,arrival_time
表结构大致如下:id,num,name,arrival_time
解决方案 »
- Oracle查询中使用in提示ORA-01722: 无效数字
- 求取数据的SQL的问题
- 新手求一根据身份证得到性别及年龄的函数
- oracle 中 一次查询大量的数据 10w或者百w级的,速度慢怎么解决?
- 急!用recover database until time恢复数据库出错
- 新手提问:winXP下怎样启动oracle
- 日期字符串要更新到datetime字段中,如何只转换有效的日期
- sql语句求两个字段相j减怎么写
- 这条sql的效率高吗?求高效写法!!!!!!!
- 配置odbc安装orcal驱动提示Could't find Oracle Instant Client in present directory.怎么整
- select 的时候如何指定字段默认值
- oracle问题,那位朋友帮帮忙。
sum(case when to_char(arrival_time,'hh24miss')>='083000' then 1 else 0 end)
from table
现在还有一个比较棘手的问题就是需要关联两张表列出未签到、迟到、正常的信息。之前做的是根据时间判断是否是迟到、正常、未签到,sql语句是:
select kq_user.num,kq_user.name,kq_day.day_time,kq_day.arrival_time,kq_user.deptName from kq_user left join (kq_day) on (kq_user.num=kq_day.userid and kq_day.day_time='20101012') where kq_user.deptno!=8 order by arrival_time asc;,上面的sql关联两张表最主要目的是显示未签到的。但现在要做的是要把这三种状态分别统计出来,肯定还是要关联表,但不知道怎么把刚才回复的语句与上一句关联起来显示三种状态的数量,数据库是MYsql。
sum(case when arrival_time>='08:31:00' then 1 else 0 end) cd
现在问题就是把这一句和select kq_user.num,kq_user.name,kq_day.day_time,kq_day.arrival_time,kq_user.deptName from kq_user left join (kq_day) on (kq_user.num=kq_day.userid and kq_day.day_time='20101012') where kq_user.deptno!=8 order by arrival_time asc;关联起来查处三种状态的数量
select
sum(case when to_char(arrival_time,'hh24miss')<='090000'then 1 else 0 end) 不迟到,
sum(case when to_char(arrival_time,'hh24miss')>'090000'then 1 else 0 end) 迟到
from tb_name
2>--sqlstatement--方法二
select a.flag, count(*) flag from (
select case
when to_char(arrival_time,'hh24miss')<='090000' then '不迟到' else '迟到' end flag
from tb_name ) a group by a.flag