postgre 分组拼接字段并根据一定的顺序string_agg
时间: 2024-01-16 20:04:41 浏览: 44
可以使用`string_agg()`函数和`ARRAY_AGG()`函数来实现根据一定顺序拼接字段。例如,以下是将字符串按照指定顺序拼接的示例:
```
SELECT id, string_agg(name, ',')
FROM (
SELECT id, name
FROM table_name
ORDER BY CASE WHEN gender = 'male' THEN 1 ELSE 2 END, age DESC
) AS sorted_table
GROUP BY id;
```
在这个例子中,我们首先使用`ORDER BY`子句对查询结果进行排序,其中男性排在女性前面,而同性别的记录按照年龄降序排序。然后,我们将排序后的结果作为子查询,并使用`string_agg()`函数将`name`字段拼接成一个以逗号分隔的字符串,并按照`id`字段进行分组。
请注意,我们在子查询中使用了`AS`关键字来给子查询结果集命名,以便在上层查询中使用该结果集。
相关问题
postgre 按照指定字段顺序分组拼接字段
可以使用`string_agg()`函数和`ARRAY_AGG()`函数来实现按照指定字段顺序分组拼接字段。例如,以下是将字符串按照指定字段顺序拼接的示例:
```
SELECT id, string_agg(name, ',')
FROM (
SELECT id, name,
CASE gender
WHEN 'male' THEN 1
WHEN 'female' THEN 2
ELSE 3
END AS gender_order
FROM table_name
) AS sorted_table
GROUP BY id, gender_order
ORDER BY id, gender_order;
```
在这个例子中,我们首先使用`CASE`语句对查询结果进行排序,其中男性排在女性前面,而未指定性别的记录排在最后。然后,我们将排序后的结果作为子查询,并使用`string_agg()`函数将`name`字段拼接成一个以逗号分隔的字符串,并按照`id`和`gender_order`字段进行分组。最后,我们使用`ORDER BY`子句对结果进行排序,以便按照指定字段顺序进行显示。
请注意,我们在子查询中使用了`AS`关键字来给子查询结果集命名,以便在上层查询中使用该结果集。
postgre中string_to_array怎么使用
在PostgreSQL中,可以使用string_to_array函数将字符串转换为数组。语法如下:
string_to_array(string text, delimiter text)
其中,string为需要转换的字符串,delimiter为分隔符。
举个例子:
SELECT string_to_array('a,b,c,d', ',');
结果为:
{a,b,c,d}
还可以带上参数2,3来指定输出的数组的长度和下标起始位置
SELECT string_to_array('a,b,c,d', ',', 2,3);
结果为:
{b,c,d}
输出了第2位到第3位的元素
相关推荐
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)