当前位置:首页 » 编程语言 » oraclesql去重

oraclesql去重

发布时间: 2025-07-09 17:27:29

sql中级进阶(三)hive的 collect_set 与oracle的wm_concat

Oracle的wm_concat用于多行合并为一行,原始版本使用逗号链接。例如:


(1)原始版本: 'aaa,bbb,ccc,ddd,eee'


修改版本使用'|'链接,例如:


(2)修改版本: 'aaa|bbb|ccc|ddd|eee'


(2)修改版本2: 'aaa|bbb|ccc|ddd|eee',并去重。


Oracle的SQL使用REGEXP_SUBSTR函数来一行拆分成多行。其格式为:


REGEXP_SUBSTR(String, pattern, position, occurrence, modifier)


参数说明如下:



  • __srcstr:需要进行正则处理的字符串

  • __pattern:进行匹配的正则表达式

  • __position:起始位置,从第几个字符开始正则表达式匹配(默认为1)

  • __occurrence:标识第几个匹配组,默认为1

  • __modifier:模式('i'不区分大小写进行检索;'c'区分大小写进行检索。默认为'c'。)


Hive的collect_set函数用于去重地将同一分组的不同行数据聚合成一个集合。例如,创建原数据表:


CREATE TABLE stud (name string, area string, course string, score int);


向原数据表插入数据:


INSERT INTO TABLE stud VALUES('zhang3','bj','math',88);


查询表中数据:


SELECT * FROM stud;


将同一分组的数据聚合成一个集合:


SELECT course, collect_set(area), avg(score) FROM stud GROUP BY course;


使用下标可以取某一个集合元素:


SELECT course, collect_set(area)[0], avg(score) FROM stud GROUP BY course;


通常,此过程的最终写法可以使用concat_ws函数连接集合中的元素,例如:


concat_ws(',', collect_set(area))


输出结果为:sh,bj


连接符号也可以改为其他字符,例如'|'。


总结:Oracle和Hive中wm_concat与collect_set、collect_list函数的主要功能相似,都是用于数据聚合处理。它们的不同在于语法和应用场景。这些函数在数据处理和分析中广泛使用,提供了有效的方法来管理多行数据。

热点内容
java返回this 发布:2025-10-20 08:28:16 浏览:593
制作脚本网站 发布:2025-10-20 08:17:34 浏览:888
python中的init方法 发布:2025-10-20 08:17:33 浏览:581
图案密码什么意思 发布:2025-10-20 08:16:56 浏览:765
怎么清理微信视频缓存 发布:2025-10-20 08:12:37 浏览:684
c语言编译器怎么看执行过程 发布:2025-10-20 08:00:32 浏览:1012
邮箱如何填写发信服务器 发布:2025-10-20 07:45:27 浏览:255
shell脚本入门案例 发布:2025-10-20 07:44:45 浏览:113
怎么上传照片浏览上传 发布:2025-10-20 07:44:03 浏览:806
python股票数据获取 发布:2025-10-20 07:39:44 浏览:712