hive聚合函数多行合并

在数据仓库和大数据处理的场景中,Hive提供了强大的SQL查询能力,其中包括聚合函数用于处理和合并多行数据。本文将深入探讨Hive中的几种常见聚合函数及其在多行合并中的应用。

一、Hive中的常见聚合函数

Hive提供了多种聚合函数,这些函数可以将多行数据合并成单行数据。常见的聚合函数包括:

  1. COUNT:统计行数
  2. SUM:求和
  3. AVG:计算平均值
  4. MAX:求最大值
  5. MIN:求最小值
  6. COLLECT_SET:将一列的值去重后合并为集合
  7. COLLECT_LIST:将一列的值合并为列表
  8. CONCAT_WS:将一列的字符串值按指定分隔符合并为单个字符串

二、具体应用实例

1. 基本聚合函数

假设有一个表 transactions,结构如下:

复制代码
CREATE TABLE transactions (
    user_id INT,
    amount DOUBLE,
    transaction_date STRING
);

表中的数据如下:

user_id amount transaction_date
1 100.0 2023-01-01
1 150.0 2023-01-02
2 200.0 2023-01-01
2 50.0 2023-01-03

通过以下查询语句,我们可以统计每个用户的交易总额、平均交易额、最大交易额和最小交易额:

复制代码
SELECT
    user_id,
    SUM(amount) AS total_amount,
    AVG(amount) AS average_amount,
    MAX(amount) AS max_amount,
    MIN(amount) AS min_amount
FROM
    transactions
GROUP BY
    user_id;

查询结果如下:

user_id total_amount average_amount max_amount min_amount
1 250.0 125.0 150.0 100.0
2 250.0 125.0 200.0 50.0
2. 使用COLLECT_SET和COLLECT_LIST

如果我们希望收集每个用户所有的交易日期,并去除重复的日期,可以使用 COLLECT_SET:

复制代码
SELECT
    user_id,
    COLLECT_SET(transaction_date) AS transaction_dates
FROM
    transactions
GROUP BY
    user_id;

查询结果如下:

user_id transaction_dates
1 "2023-01-01", "2023-01-02"
2 "2023-01-01", "2023-01-03"

如果需要保留所有交易日期的顺序(包括重复),可以使用 COLLECT_LIST:

复制代码
SELECT
    user_id,
    COLLECT_LIST(transaction_date) AS transaction_dates
FROM
    transactions
GROUP BY
    user_id;

查询结果如下:

user_id transaction_dates
1 "2023-01-01", "2023-01-02"
2 "2023-01-01", "2023-01-03"
3. 使用CONCAT_WS进行字符串合并

如果希望将每个用户的交易日期合并为一个字符串,可以使用 CONCAT_WS函数:

复制代码
SELECT
    user_id,
    CONCAT_WS(',', COLLECT_LIST(transaction_date)) AS transaction_dates
FROM
    transactions
GROUP BY
    user_id;
​

查询结果如下:

user_id transaction_dates
1 2023-01-01,2023-01-02
2 2023-01-01,2023-01-03
相关推荐
Sayai1 天前
Hadoop 集群安全加固实战:YARN 未授权访问漏洞修复,firewalld 白名单 + Nginx 反向代理 Basic Auth 全流程
运维·hadoop·nginx·安全·网络安全
IT小小猪1 天前
# Hadoop 3.3.6 完全分布式集群部署知识库
hadoop·分布式·eclipse
泡干脆面就番茄1 天前
Hive入门:架构解析与安装部署实录
大数据·数据仓库·hive·hadoop·架构
yyk333241 天前
Hive架构
hive·hadoop·架构
APItesterCris1 天前
告别反复手工查价:用 Open‑Claw 搭建商品监控与数据分析小工具
大数据·数据库·数据仓库·自动化
Tongzhi20261 天前
2026 年考勤行业趋势:考勤正在从“打卡工具“变成“人力成本中枢“
大数据·数据结构·数据仓库·科技·数据库开发
计算机编程指导师1 天前
计算机毕设选题:基于Spark+Django的水质多指标关联分析与可视化系统源码 毕业设计 选题推荐 数据分析 机器学习
大数据·hadoop·python·spark·毕业设计·课程设计·水质
计算机编程指导师1 天前
【大数据毕设】Hadoop+Spark台北市住宅价格数据可视化分析系统源码 毕业设计 选题推荐 毕设选题 数据分析 机器学习
大数据·hadoop·python·spark·毕业设计·课程设计·住宅价格
计算机编程指导师2 天前
【计算机毕设推荐】基于Hadoop+Spark的公共交通运营数据分析与可视化系统源码 毕业设计 选题推荐 毕设选题 数据分析 机器学习
大数据·hadoop·python·计算机·数据分析·spark·交通
计算机编程指导师2 天前
【计算机毕设选题推荐】基于Hadoop的宫颈癌变进程光谱数据分析系统源码 毕业设计 选题推荐 毕设选题 数据分析 机器学习
大数据·hadoop·python·数据分析·spark·毕业设计·宫颈癌变