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。我們想要查詢每個部門的員工姓名,并用逗號分隔??梢允褂靡韵虏樵儯?/p>
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 |