需求:得到指定时间开始往前数连续的天数,如id为a的数据对应时间:20200115,20200114,20200112,20200101,给定查询时间为20200115,则连续天数为2,一中断就终止

初始数据:

执行SQL后结果,其中count为连续的天数:

SQL:

WITH T_AG_TOP_SYMBOLS AS (
SELECT '20191024' AS UPDATE_DATE, '000158' AS TICKER_SYMBOL, 'XSHZ' AS EXCHANGE_CD, '常山北明' AS SYMBOL_NAME, '华为产业链概念,2天2板。华为发布折叠屏手机国行版;龙头诚迈科技11天9板;公司互动平台表示为华为鸿蒙系统的合作伙伴' AS CSL_SENTENCE FROM DUAL UNION ALL
SELECT '20191024' AS UPDATE_DATE, '000679' AS TICKER_SYMBOL, 'XSHZ' AS EXCHANGE_CD, '大连友谊' AS SYMBOL_NAME, '房地产概念。公司是专注于大连、沈阳、邯郸的商业地产开发商' AS CSL_SENTENCE FROM DUAL UNION ALL
SELECT '20191024' AS UPDATE_DATE, '002084' AS TICKER_SYMBOL, 'XSHZ' AS EXCHANGE_CD, '海鸥住工' AS SYMBOL_NAME, '业绩增长概念。公司主要从事高档水龙头零组件、排水器、温控阀等;三季度净利润5395万元,同比增长1086.09%' AS CSL_SENTENCE FROM DUAL UNION ALL
SELECT '20191024' AS UPDATE_DATE, '002591' AS TICKER_SYMBOL, 'XSHZ' AS EXCHANGE_CD, '恒大高新' AS SYMBOL_NAME, '业绩预增概念。公司预告年报净利润同比增长186%-272%;为国内少数几家掌握垃圾焚烧炉防护技术并有能力进行大规模施工的企业之一' AS CSL_SENTENCE FROM DUAL UNION ALL
SELECT '20191024' AS UPDATE_DATE, '300032' AS TICKER_SYMBOL, 'XSHZ' AS EXCHANGE_CD, '金龙机电' AS SYMBOL_NAME, '创业板壳股概念。上市公司重组新规修改,支持创业板重组上市;此前为创业板壳股,公司加工柔性AMOLED的产线目前有两条,预计上半年净利润同比增长93%-64.5%,因财务费用大幅减少,' AS CSL_SENTENCE FROM DUAL UNION ALL
SELECT '20191024' AS UPDATE_DATE, '300200' AS TICKER_SYMBOL, 'XSHZ' AS EXCHANGE_CD, '高盟新材' AS SYMBOL_NAME, '业绩预增概念。预告年报净利润同比增长118.2%-147.9%,因华森塑胶收入增长等' AS CSL_SENTENCE FROM DUAL UNION ALL
SELECT '20191024' AS UPDATE_DATE, '300492' AS TICKER_SYMBOL, 'XSHZ' AS EXCHANGE_CD, '山鼎设计' AS SYMBOL_NAME, '公告利好,2天2板。股权转让-华图投资受让上市公司30%股份表决权' AS CSL_SENTENCE FROM DUAL UNION ALL
SELECT '20191024' AS UPDATE_DATE, '600223' AS TICKER_SYMBOL, 'XSHG' AS EXCHANGE_CD, '鲁商发展' AS SYMBOL_NAME, '医美概念,4天4板。龙头鲁商置业4连板;多家美妆平台10分钟预售超去年双11全天;公司拟收购透明质酸(玻尿酸)生产商山东焦点生物股权,完成后将获得控制权;焦点生物目前拥有玻尿酸产能120吨/年' AS CSL_SENTENCE FROM DUAL UNION ALL
SELECT '20191023' AS UPDATE_DATE, '600223' AS TICKER_SYMBOL, 'XSHG' AS EXCHANGE_CD, '鲁商发展' AS SYMBOL_NAME, '化妆品概念,3天3板。龙头鲁商置业三连板;多家美妆平台10分钟预售超去年双11全天;公司收购山东焦点生物,标的是一家专业生产透明质酸的企业;主营山东地区房地产开发' AS CSL_SENTENCE FROM DUAL UNION ALL
SELECT '20191022' AS UPDATE_DATE, '600223' AS TICKER_SYMBOL, 'XSHG' AS EXCHANGE_CD, '鲁商发展' AS SYMBOL_NAME, '公告利好,2天2板。公司主营山东地区房地产开发,此前收购山东焦点生物,标的是一家专业生产透明质酸的企业' AS CSL_SENTENCE FROM DUAL UNION ALL
SELECT '20191023' AS UPDATE_DATE, '603477' AS TICKER_SYMBOL, 'XSHG' AS EXCHANGE_CD, '振静股份' AS SYMBOL_NAME, '养猪概念,16天8板。生猪价格站上37元/公斤,单周上涨超10%;公司拟收购巨星农牧,标的涉及畜禽养殖和饲料生产两大业务' AS CSL_SENTENCE FROM DUAL UNION ALL
SELECT '20190926' AS UPDATE_DATE, '603477' AS TICKER_SYMBOL, 'XSHG' AS EXCHANGE_CD, '振静股份' AS SYMBOL_NAME, '公告利好,2天2板。并购重组-拟收购巨星农牧100%股份,标的涉及畜禽养殖和饲料生产两大业务' AS CSL_SENTENCE FROM DUAL UNION ALL
SELECT '20191024' AS UPDATE_DATE, '603477' AS TICKER_SYMBOL, 'XSHG' AS EXCHANGE_CD, '振静股份' AS SYMBOL_NAME, '养猪概念,17天9板。生猪价格站上37元/公斤,单周上涨超10%;公司拟收购巨星农牧,标的涉及畜禽养殖和饲料生产两大业务' AS CSL_SENTENCE FROM DUAL UNION ALL
SELECT '20191022' AS UPDATE_DATE, '603477' AS TICKER_SYMBOL, 'XSHG' AS EXCHANGE_CD, '振静股份' AS SYMBOL_NAME, '养猪概念,9天5板。生猪价格站上37元/公斤,单周上涨超10%;公司拟收购巨星农牧,标的涉及畜禽养殖和饲料生产两大业务' AS CSL_SENTENCE FROM DUAL UNION ALL
SELECT '20191017' AS UPDATE_DATE, '603477' AS TICKER_SYMBOL, 'XSHG' AS EXCHANGE_CD, '振静股份' AS SYMBOL_NAME, '养猪概念,6天3板。公司拟收购巨星农牧,标的涉及畜禽养殖和饲料生产两大业务' AS CSL_SENTENCE FROM DUAL UNION ALL
SELECT '20191016' AS UPDATE_DATE, '603477' AS TICKER_SYMBOL, 'XSHG' AS EXCHANGE_CD, '振静股份' AS SYMBOL_NAME, '养猪概念。公司拟收购巨星农牧100%股份,标的涉及畜禽养殖和饲料生产两大业务' AS CSL_SENTENCE FROM DUAL UNION ALL
SELECT '20191024' AS UPDATE_DATE, '603880' AS TICKER_SYMBOL, 'XSHG' AS EXCHANGE_CD, '南卫股份' AS SYMBOL_NAME, '医药概念。公司实控人旗下左右生物主要研发产品为治疗系统性红斑狼疮的青蒿素衍生物马来酸蒿乙醚胺' AS CSL_SENTENCE FROM DUAL
) ,
-- 首先得到给定时间所有数据,后面方便匹配
T AS(SELECT *FROM T_AG_TOP_SYMBOLSWHERE UPDATE_DATE = '20191024'),
-- 根据T表匹配全部数据,并根据TICKER_SYMBOL字段分组排序,按时间倒序
T2 AS(SELECT A.*,ROW_NUMBER() OVER(PARTITION BY A.TICKER_SYMBOL, A.EXCHANGE_CD ORDER BY A.TICKER_SYMBOL, A.UPDATE_DATE DESC) AS RANKFROM T_AG_TOP_SYMBOLS A, TWHERE T.TICKER_SYMBOL = A.TICKER_SYMBOL
--这里需要加个时间限制,否则大于指定时间的数据也会查询出来AND A.UPDATE_DATE <= T.UPDATE_DATE),
-- 拿到分组后的数据,通过rank做连续两条记录时间相减,结果为1则给1,其它给0(这里给0和1主要是为了用来累乘),累乘后通过乘积=1判断是否连续,为1连续,其它不连续
TT AS(SELECT TICKER_SYMBOL,
-- 这里是根据我这边的业务需求处理了,可以直接count(CASEWHEN TO_DATE(MAX(UPDATE_DATE), 'YYYYMMDD') < TRUNC(SYSDATE) THENCOUNT(1)ELSECOUNT(1) - 1END) AS COUNT,TO_CHAR(TO_DATE(MIN(UPDATE_DATE), 'YYYYMMDD'),'YYYY-MM-DD HH24:MI:SS') AS DATE_TIMEFROM (SELECT A.*,
-- 累乘步骤,因为给0会报错,所以为0时给2,本来可以根据积不为0判断连续,现在可以根据乘积为1判断连续,同样可以得到结果EXP(SUM(LN(DECODE(A.NUM, 0, 2, A.NUM)))OVER(PARTITION BY A.TICKER_SYMBOL ORDER BY A.UPDATE_DATE DESC)) AS SUMFROM (SELECT T2.*, 1 AS NUMFROM T2
--这里rank为1需要单独提取,因为后面语句只会1之后的数据WHERE RANK = 1UNION ALLSELECT B.*,(CASEWHEN (TO_DATE(A.UPDATE_DATE, 'YYYYMMDD') -TO_DATE(B.UPDATE_DATE, 'YYYYMMDD')) = 1 THEN1ELSE0END) AS NUMFROM T2 A, T2 BWHERE A.RANK  = B.RANK - 1AND A.TICKER_SYMBOL = B.TICKER_SYMBOL) AORDER BY TICKER_SYMBOL, UPDATE_DATE DESC)
-- sum即为累乘的乘积WHERE SUM = 1GROUP BY TICKER_SYMBOL)
SELECT B.SYMBOL,B.SYMBOL_NAME,T.TICKER_SYMBOL AS SYMBOL_NUM,TT.COUNT,(CASEWHEN SUBSTR(T.TICKER_SYMBOL, 0, 1) = 6 THEN'SH'ELSE'SZ'END) AS MARKET,B.INDUSTRY,TO_CHAR(B.MARKET_VALUE / 100000000, 'FM99999990.00') AS MARKET_VALUE,T.CSL_SENTENCE,T.UPDATE_DATE,TT.DATE_TIMEFROM TLEFT JOIN TTON T.TICKER_SYMBOL = TT.TICKER_SYMBOLLEFT JOIN T_AG_SYMBOL_INFO BON T.TICKER_SYMBOL = SUBSTR(B.SYMBOL, 0, 6)ORDER BY B.SYMBOL

oracle求指定时间连续天数相关推荐

  1. 日期格式转换,正则匹配后转换;指定时间增加天数加转格式;js时间转换格式

    指定时间增加天数加转格式,正则匹配: //申明需要的时间格式 SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss& ...

  2. python获取年末,月末,季末的日期和距指定时间的天数

    我们在python日常使用中经常会用到时间的各种计算,这个也是让人头疼的地方,下面的方法实现了 年末,月末,季末的日期和距指定时间的天数的计算,要的拿去.自己也做个笔记.后面直接用. def last ...

  3. mysql/hive求最大连续天数(间隔1天也算连续)

    数据: User_id login_date 1001 2021-08-02 1001 2021-08-01 1001 2021-08-03 1001 2021-08-05 1001 2021-08- ...

  4. MySql查询系统时间,SQLServer查询系统时间,Oracle查询系统时间

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. MySQL查询系统时间 第一种方法:select current_date: MySQL> s ...

  5. 求用户最大连续登陆天数mysql实现

    用户连续登陆 一.规定时间内用户最大连续登陆天数 二.user_login表字段(所有用户登陆信息) 三.分解步骤 1.where初步筛选 2.窗口函数分组排序 4.计算获得连续的字段 5.分组计算连 ...

  6. oracle获取指定日期内工作日的天数或节假日天数

    oracle 获取指定日期内工作日的天数 不必拘泥,可以反向思考 获取这段时期内周六日的天数,再用总天数减去周六日的天数,得到我们想要的 获取时间段内 所有日期 select to_date('202 ...

  7. oracle当前毫秒时间,oracle获得当前时间,精确到毫秒并指定精确位数

    oracle获得当前时间的,精确到毫秒   可以指定精确豪秒的位数 select to_char(systimestamp, 'yyyymmdd hh24:mi:ss.ff ') from dual; ...

  8. oracle获得当前系统时间精确到毫秒,oracle获取当前时间,精确到毫秒并指定精确位数的实现方法...

    oracle获得当前时间的,精确到毫秒   可以指定精确豪秒的位数 select to_char(systimestamp, 'yyyymmdd hh24:mi:ss.ff ') from dual; ...

  9. oracle指定过个时间点 job_SQL SERVER 快速恢复:生成指定时间点的恢复脚本

    SET NOCOUNT ON DECLARE @db_name sysname, /*需要恢复的数据库名称*/@restore_db_name sysname, /*还原后的数据库名称*/@recov ...

最新文章

  1. 数据挖掘之人工神经网络BP算法
  2. For循环中不可以嵌套RDD操作
  3. PL/SQL 基础( 上 )
  4. gwt格式_活性GWT
  5. 论文浅尝 | 从树结构的长短期记忆网络改进语义表示
  6. 腾讯视频怎么删除收藏的内容
  7. php 语法验证_PHP用户登录验证模块
  8. webstorm汉化攻略
  9. ENSP静态路由配置
  10. irlr7843引脚图_IRLU7843_PDF技术资料下载_货期信息(1/10)_IR - 万联芯城
  11. Java网络编程(BIO和NIO)
  12. go语言视频教程_ go语言入门视频教程_go语言实战视频教程
  13. dell文件服务器连接,配置DELL MD3200存储服务器连接到多台主机
  14. Mapguide配置心得
  15. Day134-136.尚品汇:平台属性接口、SPU、跨域问题、配置持久化、MinIO 分布式文件存储系统
  16. 零售价9000美元!索尼发布首款专业无人机;三星推出最小尺寸高像素图像传感器 | 美通社头条...
  17. 小班中班,随机10以内减法练习题,A4纸可直接打印
  18. c语言求n个数中奇数乘积,C语言:输入N个数 分别统计奇数和偶数之和 之积
  19. 苏宁java二面,苏宁二面+三面
  20. CentOS7安装RocketMQ

热门文章

  1. pycharm安装django失败
  2. x64内核HOOK技术之拦截
  3. 最新刷机包1200.A1200R\E版本通刷
  4. easyUI tree 异步加载数据
  5. 中国电信智能网-呈现出广阔的发展前景
  6. QQ18年,解密8亿月活的QQ后台服务接口隔离技术
  7. 杰微主板bios设置u盘启动详细教程
  8. 常用快递物流查询接口对接案例
  9. CVPR 2020 论文大盘点-动作识别篇
  10. IE0新特性归纳及JavaScript 功能增强分析