oracle 时间天数计算,oracle计算连续登陆/上班天数
现在有一个计算用户连续上班天数的报表,发现通过用row_number分析函数可以完美计算这个问题。
这个SQL可以解决计算用户连续登陆、签到、上班、旷工等问题。首先将row_number按照日期排序
将日期的日,比如2016-7-1,将1截取出来转换成数字
把这个日期数字减去row_number计算出来值,作为分组号,因为不连续的值算出来的分组号就不一致;
根据分组号字段进行group by,可以算出每段连续上班的开始、结束时间、天数
如原数据是这样的
2016/7/1
2016/7/2
2016/7/4
2016/7/5
2016/7/6
2016/7/7
……
计算出来的结果是
分组号 开始时间 结束时间 天数
0 2016/7/1 2016/7/2 2
1 2016/7/4 2016/7/9 6
……
下面上代码with t1 as
(
select date'2016-7-1' d1 from dual
union
select date'2016-7-2' d1 from dual
union
select date'2016-7-4' d1 from dual
union
select date'2016-7-5' d1 from dual
union
select date'2016-7-6' d1 from dual
union
select date'2016-7-7' d1 from dual
union
select date'2016-7-8' d1 from dual
union
select date'2016-7-9' d1 from dual
union
select date'2016-7-11' d1 from dual
union
select date'2016-7-12' d1 from dual
union
select date'2016-7-13' d1 from dual
union
select date'2016-7-14' d1 from dual
union
select date'2016-7-18' d1 from dual
union
select date'2016-7-19' d1 from dual
)
select gn,min(d1),max(d1),count(*)
from(
select d1,to_number(to_char(d1,'dd'))-row_number() over(order by d1) gn from t1
)group by gn order by 2
oracle 时间天数计算,oracle计算连续登陆/上班天数相关推荐
- oracle计算连续登陆/上班天数
现在有一个计算用户连续上班天数的报表,发现通过用row_number分析函数可以完美计算这个问题. 这个SQL可以解决计算用户连续登陆.签到.上班.旷工等问题. 首先将row_number按照日期排序 ...
- 计算连续登陆最大天数
计算连续登陆最大天数 原始数据: u0001 2019-10-10 u0001 2019-10-11 u0001 2019-10-12 u0001 2019-10-14 u0001 2019-10-1 ...
- oracle时间去掉日期,Oracle 时间和日期处理
-- Oracle时间 SELECT SYSDATE FROM dual; -- 系统时间 SELECT SYSTIMESTAMP FROM dual; -- 当前系统时间戳 SELECT CURRE ...
- oracle 时间按季度,ORACLE时间字段取年、月、日、季度
ORACLE时间字段取年.月.日.季度 --得到年月,日,季度 select to_char(日期,'yyyymmdd') DATE_ID,to_char(日期,'yyyy')||'年'||to_ ...
- mysql 连续打卡天数_Sql如何统计连续打卡天数?
今天来解一道题面试中可能经常会被一些面试官拿来"刁难"的题,就是<如何统计连续打卡天数>,当然了这里面的打卡可以换成任意其他行为,比如连续登陆天数,连续学习天数,连续购 ...
- oracle 时间按季度,Oracle按日期季度查询
如下表table1: 日期(exportDate) 数量(amount) -------------- ----------- 14-2月 -08 20 10-3月 -08 2 14-4月 -08 6 ...
- oracle 时间条件 当天,oracle 查询当天数据的sql条件写法
日报数据统计中会用到当天数据的查询,下列就是日期要对应的条件: between to_date(to_char(sysdate,'yyyy-mm-dd') || ' 00:00:01','yyyy-m ...
- oracle 时间 转 日期,oracle中如何将日期转成时间戳
1,函数定义法 定义 create or replace function date_to_unix_ts(PDate in date) return number is l_unix_ts numb ...
- oracle时间类型插入,oracle 插入时间字符串 Date类型
和MysqL不同,MysqL 可以直接插入 时间字符串的, UPDATE HR_EFF_EVALUATOR SET LEVEL_ = '2', ROLE_NAME_ = '他评', ASSESS_RO ...
- oracle时间回溯,关于Oracle降序索引的定意及回溯
降序索引本质上是FBI,其具体定义可以通过 user_ind_expressions 或dba_ind_expressions 查询. 那么同样的,降序索引只有在CBO下才能被使用. Connecte ...
最新文章
- iphone开发之数据库CoreData
- NSubstitute完全手册(一)入门基础
- BitMap位图与海量数据的理解与应用
- 【One by One系列】IdentityServer4(四)授权码流程
- 继电器rc吸收电路取值_继电器的工作原理以及驱动电路解析
- 【Java】不正当使用break语句的危害
- linux tar压缩解压命令的详细解释
- pyspark 编写 UDF函数
- nux 平台的 libpcap 源代码分析
- python 伪多线程_从伪并行的 Python 多线程说起
- 加速Android Studio/Gradle构建
- 微信小程序网易云音乐
- MyBatis 极速入门
- Latex页眉三种形式设置
- m3u8转换为mp4格式
- web学生网页设计作业源码 HTML5+CSS大作业——三八女人节主题设计(1页)
- 问卷生成选项,选项排序,设定答案
- 常见的http请求返回数字的含义
- Win7系统修复启动项命令
- Android 第三方ROM CyanogenMod 源码下载,编译,刷机
热门文章
- 4月24日云栖精选夜读:AI不可怕,就怕AI会画画——这里有一种你还不知道的‘图’灵测试…...
- PID为0的系统空闲进程连接状态为TIME_WAIT
- nrcellcu和nrcelldu_华为5G常用MML命令(现场版本)
- 嵌入式系统那些事-一张图秒懂系统启动流程
- Nature:细菌增长和扩张的平衡机制
- Spring: error at ::0 can‘t find referenced pointcut的错误并解决
- mysql implode_php implode函数应用
- [ElasticSearch ]2轻量级搜索
- 网络安全笔记-17-单臂路由
- 小象学院数据分析笔记:绘制常见的图形