HIVE SQL实现分组字符串拼接concat

news/2025/2/19 15:22:30/

在Mysql中可以通过group_concat()函数实现分组字符串拼接,在HIVE SQL中可以使用concat_ws()+collect_set()/collect_list()函数实现相同的效果。
实例:

abc
2014B9
2015A8
2014A10
2015B7
2014B6

1.concat_ws+collect_list 非去重拼接

select a ,concat_ws('-',collect_list(b))  as col_b,concat_ws('-',collect_list(cast(c as string)))  as col_c
from tb_name
group by a
;

查询结果:

acol_bcol_c
2014B-A-B9-10-6
2015A-B8-7

2.concat_ws+collect_set 去重拼接

select a ,concat_ws('-',collect_set(b))  as col_b,concat_ws('-',collect_set(cast(c as string)))  as col_cfrom tb_name
group by a
;

查询结果:

acol_bcol_c
2014B-A9-10-6
2015A-B8-7

3.如果在分组拼接的时候需要保持拼接结果为有序排序,可以通过以下两种方式
1)先排序再拼接

select a ,concat_ws('-',collect_set(b))  as col_b,concat_ws('-',collect_set(cast(c as string)))  as col_cfrom 
(
select a ,b,c,row_number() over (partition by a order by b asc) as rn
from tb_name
) t
group by a
;

查询结果:

acol_bcol_c
2014A-B10-6-9
2015A-B8-7
select a ,concat_ws('-',collect_list(b))  as col_b,concat_ws('-',collect_list(cast(c as string)))  as col_cfrom 
(
select a ,b,c,row_number() over (partition by a order by b asc) as rn
from tb_name
) t
group by a
;

查询结果:(col_b与col_c 的位置对应且col_b中的字符有序)

acol_bcol_c
2014A-B-B10-6-9
2015A-B8-7

2)sort_array()函数升序排列

select a ,concat_ws('-',sort_array(collect_list(b)))  as col_bfrom tb_name
group by a
;
acol_b
2014A-B-B
2015A-B

http://www.ppmy.cn/news/1043450.html

相关文章

聊聊看React和Vue的区别

Vue 更适合小项目,React 更适合大公司大项目; Vue 的学习成本较低,很容易上手,但项目质量不能保证...... 真的是这样吗?借助本篇文章,我们来从一些方面的比较来客观的去看这个问题。 论文档的丰富性 从两个…

PSP - 基于扩散生成模型预测蛋白质结构 EigenFold 算法与环境配置

欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://spike.blog.csdn.net/article/details/132357976 Paper: EigenFold: Generative Protein Structure Prediction with Diffusion Models EigenFold 是用于蛋白质结构预测的扩散生成模型…

himall3.0商城源码

目录 1 himall3.0商城源码 1.1 /// 是否可以售后 1.2 //待收货 待自提只可以订单退款 1.3 /// 是否可以售后 himall3.0商城源码 /// <summary>

ARM M33架构入门

概述 Arm Cortex-M33核心处理器专为需要高效安全或数字信号控制的物联网和嵌入式应用而设计。该处理器具有许多可选功能&#xff0c;包括数字信号处理扩展 (DSP)、用于硬件强制隔离的TrustZone 安全性、内存保护单元 (MPU)和浮点单元 (FPU)。 Cortex-M33 的性能比 Cortex-M…

html显示空白字符

显示空白字符 默认情况下&#xff0c;元素显示内容会产生空白折叠&#xff0c;即对于空白字符&#xff0c;最终会将连续的空白字符显示为一个空格&#xff1b; 如果希望能够正常在元素中显示这些空白字符&#xff0c;那么可以进行如下设置&#xff1a; .chapterContent {whit…

算法与数据结构(七)--堆

一.堆 1.堆的定义 堆是计算机科学中一类特殊的数据结构的通常&#xff0c;堆通常可以被看做是一颗完全二叉树的数组对象。 堆的特性 1.它是完全二叉树&#xff0c;除了树的最后一层结点不需要是满的&#xff0c;其他的每一层从左到右都是满的&#xff0c;如果最后一层结点不…

视频汇聚平台EasyCVR视频监控播放平台WebRTC流地址无法播放的问题解决方案

开源EasyDarwin视频监控TSINGSEE青犀视频平台EasyCVR能在复杂的网络环境中&#xff0c;将分散的各类视频资源进行统一汇聚、整合、集中管理&#xff0c;在视频监控播放上&#xff0c;TSINGSEE青犀视频安防监控汇聚平台可支持1、4、9、16个画面窗口播放&#xff0c;可同时播放多…

南大通用数据库(Gbase 8s) 创建UDR外部函数

一、在使用 date_format、from_unixtime、to_days、yearweek 函数时&#xff0c;Gbase 8s 数据库不支持&#xff0c;可以使用创建 UDR 外部函数来实现 二、登录命令控制台或者使用 navicat 连接 Gbase 数据库 这里使用 navicat &#xff0c;点击新增连接选择 PostGreSql 驱动…