目录
0 场景描述
1 数据准备
2 问题分析
编辑
编辑
3 小结
数字化建设通关指南
0 场景描述
表 t_1 和表 t_2 通过 a 和 b 关联时,有相等的取相等的值匹配,不相等时每一 个 a 的值在 b 中找差值最小的来匹。
表 t_1:a 中无重复值
表 t_1:a 中无重复值
a 1 2 4 5 8 10
表 t_2:b 中无重复值 b 2 3 7 11 13
问题:单向最近匹配
输出结果如下所示:
注意:b 的值可能会被丢弃
a b
1 2
2 2
4 3
5 3
5 7
8 710 11
1 数据准备
sql">create table t_1 as(select stack(6,1,2,4,5,8,10) as (a));create table t_2 as(select stack(5,2,3,7,11,13) as (b));
2 问题分析
步骤1:自关联,生成全量的数据集。并按照关联的结果集,按照abs(a-b)差值排序。注意差值有可能重复,因而采用dense_rank()
sql">select a, b, abs(a-b) diff, dense_rank() over (partition by a order by abs(a-b) )
from t_1,t_2
步骤2:过滤出rn=1 的值则为最终结果
sql">select a, b
from (select a, b, abs(a - b) diff, dense_rank() over (partition by a order by abs(a - b) ) rnfrom t_1,t_2) t
where rn = 1
3 小结
本文分析了一种非等值连接--单向近距离匹配的方法及技巧、
数字化建设通关指南
专栏原价99,现在活动价39.9,按照阶梯式增长,直到恢复原价
专栏优势:
(1)一次收费持续更新。
(2)实战中总结的SQL技巧,帮助SQLBOY 在SQL语言上有质的飞越,无论你应对业务难题及面试都会游刃有余【全网唯一讲SQL实战技巧,方法独特】
SQL很简单,可你却写不好?每天一点点,收获不止一点点-CSDN博客
(3)实战中数仓建模技巧总结,让你认识不一样的数仓。【数据建模+业务建模,不一样的认知体系】(如果只懂数据建模而不懂业务建模,数仓体系认知是不全面的)
(4)数字化建设当中遇到难题解决思路及问题思考。
我的专栏具体链接如下:
数字化建设通关指南_莫叫石榴姐的博客-CSDN博客