HIVE SQL实现通过两字段不分前后顺序去重

c 复制代码
--数据建表
drop table if exists db.tb_name;
create table if not exists db.tb_name
( suj1 string
	,suj2 string
)
;

insert overwrite table db.tb_name
values 
("语文","数学")
,("语文","英语")
,("数学","语文")
,("物理","化学")
,("生物","物理")
,("化学","物理")
;

1.通过常规的分组排序/分组去重,该种方式去重时考虑了前后顺序,无法满足要求

1)分组排序

c 复制代码
select * from
(
select suj1
	,suj2
	,row_number() over (partition by suj1,suj2 order by 1 desc) rn
from 
db.tb_name
) t
where rn=1
;

2)分组

c 复制代码
select suj1,suj2
from 
db.tb_name
group by suj1,suj2
;

2.分组排序是将分组前后顺序统一

c 复制代码
select suj1,suj2 from
(
select suj1
	,suj2
	,row_number() over (partition by concat_ws(',',sort_array(split(concat(suj1,',',suj2),','))) order by 1 desc) as rn
from 
db.tb_name
) t
where rn=1
;

最终去重后输出的结果:

相关推荐
莫叫石榴姐3 小时前
SQL百题斩:从入门到精通,一站式解锁数据世界
大数据·数据仓库·sql·面试·职场和发展
Miqiuha6 小时前
sql的表join怎么学?
数据库·sql
为什么我不是源代码6 小时前
JPA读取数据库离谱问题-No property ‘selectClassByName‘ found-Not a managed type
java·sql
IT森林里的程序猿7 小时前
基于Hadoop的京东电商平台手机推荐系统的设计与实现
大数据·hadoop·智能手机
秃头菜狗8 小时前
十四、运行经典案例 wordcount
大数据·linux·hadoop
Java战神8 小时前
Hadoop
大数据·hadoop·分布式
ZhengEnCi9 小时前
SQL 分组排序限制查询技术解析-GROUP-BY-ORDER-BY-DESC-LIMIT 实战应用
后端·sql
ZhengEnCi10 小时前
SQL统计查询入门宝典-COUNT-GROUP-BY技术解析
后端·sql
爱可生开源社区10 小时前
2025 年 9 月《大模型 SQL 能力排行榜》发布,新增 Kimi K2 最新版测评!
sql·llm
养生技术人11 小时前
Oracle OCP认证考试题目详解082系列第49题
运维·数据库·sql·oracle·database·开闭原则·ocp