GROUP_CONCAT
是 Hive 中的一个字符串聚合函数,它可以将同一组中的所有非空字符串连接成一个字符串,并在每个组之间使用指定的分隔符
以下是 GROUP_CONCAT
的基本语法:
GROUP_CONCAT([DISTINCT] expression) WITHIN GROUP (ORDER BY order_by_expression) [SEPARATOR 'string']
参数说明:
expression
:要连接的列或表达式。DISTINCT
:可选参数,用于去除重复的字符串。order_by_expression
:可选参数,用于指定排序顺序。SEPARATOR
:可选参数,用于指定分隔符。以下是一个使用 GROUP_CONCAT
的示例:
假设我们有一个名为 employees
的表,其中包含以下列:id
、name
和 department
。我们想要查询每个部门的员工姓名,并用逗号分隔。可以使用以下查询:
SELECT department, GROUP_CONCAT(name) AS names
FROM employees
GROUP BY department;
这将返回以下结果:
department | names |
---|---|
HR | Alice,Bob |
IT | Charlie,David,Eve |
Sales | Frank,Grace,Hank |
如果我们想要在部门名称之前添加一个前缀,例如 “Dept:”,可以使用以下查询:
SELECT 'Dept:' || department AS department, GROUP_CONCAT(name) AS names
FROM employees
GROUP BY department;
这将返回以下结果:
department | names |
---|---|
Dept:HR | Alice,Bob |
Dept:IT | Charlie,David,Eve |
Dept:Sales | Frank,Grace,Hank |
如果需要按部门名称对结果进行排序,可以在 GROUP BY
子句中添加 ORDER BY department
:
SELECT 'Dept:' || department AS department, GROUP_CONCAT(name) AS names
FROM employees
GROUP BY department
ORDER BY department;
这将返回按部门名称排序的结果:
department | names |
---|---|
Dept:HR | Alice,Bob |
Dept:IT | Charlie,David,Eve |
Dept:Sales | Frank,Grace,Hank |