当前位置: 首页 > news >正文

hivesql连续日期统计最大逾期/未逾期案例

1、虚表(测试表和数据) create test_table as

select a.cust_no, a.r_date, a.yqts from  (

select '123' as cust_no, '20231101' as r_date, 0 as yqts

union all

select '123' as cust_no, '20231102' as r_date, 1 as yqts

union all

select '123' as cust_no, '20231103' as r_date, 2 as yqts

union all

select '123' as cust_no, '20231104' as r_date, 3 as yqts

union all

select '123' as cust_no, '20231105' as r_date, 0 as yqts

union all

select '123' as cust_no, '20231106' as r_date, 0 as yqts

union all

select '123' as cust_no, '20231107' as r_date, 1 as yqts

) a

2、加入有表test_table,数据如上,0标识未逾期,1标识逾期,求连续最大无逾期和逾期的天数,以上数据可直接看出最大连续逾期天数为3、未逾期未2。

3、首先将测试数据排序,让数据连续

select a.cust_no, a.r_date, a.yqts from test_table a where 1=1 order by a.cust_no, a.r_date asc

4、将数据分组并给是否逾期打上标识1逾期,2未逾期,多行转一行

select tx.cust_no, count(distinct tx.r_date) as sum_ctn, concat_ws('',collection_list(case when cast(tx.yqts as double) > 0 then '1' else '2' end)) as sfflag from (

select a.cust_no, a.r_date, a.yqts from test_table a where 1=1 order by a.cust_no, a.r_date asc

) tx

执行结果:

cust_no        sum_ctn        sfflag

123               7                    2111221

5、使用正则表达式分别替换,2111221改字符串中包含逾期和未逾期,将逾期1*都用A替换掉(同时也是分割符),剩下就是未逾期的,逾期的同理

select ty.cust_no, ty.sum_ctn, regexp_replace(ty.sfflag, '\2+', 'A') as yqflag, regexp_replace(ty.sfflag, '\1+', 'A') as wyqflag from (

'123'  as cust_no         7    as sum_ctn      '2111221' as sfflag

) ty

执行结果:

cust_no        sum_ctn        yqflag        wyqflag

123                7                  A111A1      2A22A

6、使用炸裂函数explode结合lateral view将数据拆分未多行,使用一次lateral view会生成一次虚表

select tz.cust_no, max(sum_ctn) as sum_ctn, max(length(yqlength)) as yqlength, max(length(wyqlength)) as wyqlength from (

123  as cust_no     7 as sum_ctn      A111A1   as yqflag       2A22A as wyqflag

) tz

lateral view explode(split(yqflag,'A')) tb1 as yqlength

lateral view explode(split(wyqflag,'A')) tb2 as wyqlength

group by tz.cust_no

http://www.lryc.cn/news/231373.html

相关文章:

  • 基于STM32的无线通信系统设计与实现
  • kubernetes--pod详解
  • WPF提供了哪些不同类型的画刷
  • STM32与ZigBee技术在智能家居无线通信中的应用研究
  • 【Apache Doris】审计日志插件 | 快速体验
  • Web安全:Vulfocus 靶场搭建.(漏洞集成平台)
  • Go ZIP压缩文件读写操作
  • 全堆栈图像生成器专为Multiverse后端Bootcamp设计,结合了React、Firebase和Hugging Face API
  • 【C#学习】button:只显示图片
  • 我招基础初级运维实习生的面试题
  • vue实现浏览器关闭或刷新弹窗提示(beforeunload/unload)
  • Zookeeper学习笔记(1)—— 基础知识
  • mp4视频批量截取!!!
  • jQuery - AJAX get() 和 post() 方法
  • 设计模式(4)-行为型模式
  • JavaScript概述
  • Solidity案例详解(四)投票智能合约
  • Linux系统编程——进程中vfork函数
  • 敏感数据是什么?包含哪些?如何保障安全?
  • Leadshop开源商城小程序源码 – 支持公众号H5
  • Scala---方法与函数
  • 【C++】泛型编程 ④ ( 函数模板 与 普通函数 调用规则 | 类型自动转换 | 类型自动转换 + 显式指定泛型类型 )
  • 基于ChatGPT的文本生成艺术框架—WordArt Designer
  • 服务名无效。 请键入 NET HELPMSG 2185以获得更多的帮助
  • UE5——C++编译MSB3073报错
  • 自己动手实现一个深度学习算法——六、与学习相关的技巧
  • Maven间接依赖
  • Java架构师分布式搜索数据准确性解决方案
  • Clickhouse学习笔记
  • vim——“Linux”