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

相关推荐
达梦产品与服务2 小时前
SQLark 实战 | 高频 SQL 脚本的导入、管理与复用
数据库·sql·数据库开发·数据库运维·脚本管理·sqlark百灵连接·sql脚本
柒和远方3 小时前
V079: Milvus 向量数据库:AI 日记本的三组件部署、集合字段建模与余弦索引
javascript·sql
ClouGence4 小时前
数据库 CI/CD 再升级:CloudDM 4.1.0 支持多数据库发布流编排
数据库·sql·ci/cd
阿里云大数据AI技术4 小时前
一套 Spark SQL,打通多种 Catalog:EMR Serverless Spark 统一数据处理实践
人工智能·sql·spark
今天AI了吗8 小时前
从“金鱼脑”到“大象记忆”:AI Agent 短期记忆与长期记忆的存储与检索全解
数据库·人工智能·python·sql·rust
养生技术人8 小时前
Oracle OCP认证考试题目详解082系列第16题
数据库·sql·oracle·ocp
Elastic 中国社区官方博客9 小时前
驯服 PUNKs:ES|QL 如何查询 Elasticsearch 从未被告知的字段
大数据·sql·elasticsearch·搜索引擎·全文检索
存在morning10 小时前
【Flink SQL 学习笔记 二】实时聚合:用窗口和 Watermark 把订单按时段统计
sql·学习·flink
大模型码小白10 小时前
Spring AI 框架中集成 MCP 的完整指南:从服务端到客户端的全流程实践
大数据·运维·数据库·人工智能·python·sql·spring
wear工程师10 小时前
MySQL 死锁怎么排查:把 innodb status 里的 HOLDS 和 WAITING 对上
sql·mysql