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 |