现在有一个计算用户连续上班天数的报表,发现通过用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计算连续登陆/上班天数相关推荐

  1. oracle计算连续登陆/上班天数

    现在有一个计算用户连续上班天数的报表,发现通过用row_number分析函数可以完美计算这个问题. 这个SQL可以解决计算用户连续登陆.签到.上班.旷工等问题. 首先将row_number按照日期排序 ...

  2. 计算连续登陆最大天数

    计算连续登陆最大天数 原始数据: u0001 2019-10-10 u0001 2019-10-11 u0001 2019-10-12 u0001 2019-10-14 u0001 2019-10-1 ...

  3. oracle时间去掉日期,Oracle 时间和日期处理

    -- Oracle时间 SELECT SYSDATE FROM dual; -- 系统时间 SELECT SYSTIMESTAMP FROM dual; -- 当前系统时间戳 SELECT CURRE ...

  4. oracle 时间按季度,ORACLE时间字段取年、月、日、季度

    ORACLE时间字段取年.月.日.季度 --得到年月,日,季度 select to_char(日期,'yyyymmdd')   DATE_ID,to_char(日期,'yyyy')||'年'||to_ ...

  5. mysql 连续打卡天数_Sql如何统计连续打卡天数?

    今天来解一道题面试中可能经常会被一些面试官拿来"刁难"的题,就是<如何统计连续打卡天数>,当然了这里面的打卡可以换成任意其他行为,比如连续登陆天数,连续学习天数,连续购 ...

  6. oracle 时间按季度,Oracle按日期季度查询

    如下表table1: 日期(exportDate) 数量(amount) -------------- ----------- 14-2月 -08 20 10-3月 -08 2 14-4月 -08 6 ...

  7. oracle 时间条件 当天,oracle 查询当天数据的sql条件写法

    日报数据统计中会用到当天数据的查询,下列就是日期要对应的条件: between to_date(to_char(sysdate,'yyyy-mm-dd') || ' 00:00:01','yyyy-m ...

  8. oracle 时间 转 日期,oracle中如何将日期转成时间戳

    1,函数定义法 定义 create or replace function date_to_unix_ts(PDate in date) return number is l_unix_ts numb ...

  9. oracle时间类型插入,oracle 插入时间字符串 Date类型

    和MysqL不同,MysqL 可以直接插入 时间字符串的, UPDATE HR_EFF_EVALUATOR SET LEVEL_ = '2', ROLE_NAME_ = '他评', ASSESS_RO ...

  10. oracle时间回溯,关于Oracle降序索引的定意及回溯

    降序索引本质上是FBI,其具体定义可以通过 user_ind_expressions 或dba_ind_expressions 查询. 那么同样的,降序索引只有在CBO下才能被使用. Connecte ...

最新文章

  1. iphone开发之数据库CoreData
  2. NSubstitute完全手册(一)入门基础
  3. BitMap位图与海量数据的理解与应用
  4. 【One by One系列】IdentityServer4(四)授权码流程
  5. 继电器rc吸收电路取值_继电器的工作原理以及驱动电路解析
  6. 【Java】不正当使用break语句的危害
  7. linux tar压缩解压命令的详细解释
  8. pyspark 编写 UDF函数
  9. nux 平台的 libpcap 源代码分析
  10. python 伪多线程_从伪并行的 Python 多线程说起
  11. 加速Android Studio/Gradle构建
  12. 微信小程序网易云音乐
  13. MyBatis 极速入门
  14. Latex页眉三种形式设置
  15. m3u8转换为mp4格式
  16. web学生网页设计作业源码 HTML5+CSS大作业——三八女人节主题设计(1页)
  17. 问卷生成选项,选项排序,设定答案
  18. 常见的http请求返回数字的含义
  19. Win7系统修复启动项命令
  20. Android 第三方ROM CyanogenMod 源码下载,编译,刷机

热门文章

  1. 4月24日云栖精选夜读:AI不可怕,就怕AI会画画——这里有一种你还不知道的‘图’灵测试…...
  2. PID为0的系统空闲进程连接状态为TIME_WAIT
  3. nrcellcu和nrcelldu_华为5G常用MML命令(现场版本)
  4. 嵌入式系统那些事-一张图秒懂系统启动流程
  5. Nature:细菌增长和扩张的平衡机制
  6. Spring: error at ::0 can‘t find referenced pointcut的错误并解决
  7. mysql implode_php implode函数应用
  8. [ElasticSearch ]2轻量级搜索
  9. 网络安全笔记-17-单臂路由
  10. 小象学院数据分析笔记:绘制常见的图形