SQL - 如何根据另一列对一列进行分组
SQL - How to group a column based on another column
我想按“ID”列分组,但连接“国家/地区”列并用逗号分隔。这可能吗?
主要table样本:
ID
Country
01
US
02
BR
02
CR
期望:
ID
Country
01
US
02
BR,CR
根据您使用的 DBMS,可以使用不同的函数来解决您的问题。一般来说,它属于聚合函数的class,因此,它需要一个你想要聚合的列(在你的例子中Country
)和一个你想要分组的可选列(在你的情况 ID
).
鉴于MySQL, SQLite and MariaDB官方文档,可以使用GROUP_CONCAT
聚合函数:
SELECT ID,
GROUP_CONCAT(Country)
FROM tab
GROUP BY ID
在相应的 links 尝试 MySQL, SQLite or MariaDB 演示。
鉴于Postgres and SQLServer官方文档,可以使用STRING_AGG
聚合函数:
SELECT ID,
STRING_AGG(Country, ',')
FROM tab
GROUP BY ID
在相应的 links 尝试 PostgreSQL or SQLServer 演示。
鉴于OracleDB官方文档,可以使用LISTAGG
聚合函数:
SELECT ID,
LISTAGG(Country, ',') WITHIN GROUP (ORDER BY Country) Country
FROM tab
GROUP BY ID
在相应的 link.
尝试 OracleDB 演示
希望这足够全面,可以帮助未来的人们使用最流行的数据库在字符串上进行聚合。
我想按“ID”列分组,但连接“国家/地区”列并用逗号分隔。这可能吗?
主要table样本:
ID | Country |
---|---|
01 | US |
02 | BR |
02 | CR |
期望:
ID | Country |
---|---|
01 | US |
02 | BR,CR |
根据您使用的 DBMS,可以使用不同的函数来解决您的问题。一般来说,它属于聚合函数的class,因此,它需要一个你想要聚合的列(在你的例子中Country
)和一个你想要分组的可选列(在你的情况 ID
).
鉴于MySQL, SQLite and MariaDB官方文档,可以使用GROUP_CONCAT
聚合函数:
SELECT ID,
GROUP_CONCAT(Country)
FROM tab
GROUP BY ID
在相应的 links 尝试 MySQL, SQLite or MariaDB 演示。
鉴于Postgres and SQLServer官方文档,可以使用STRING_AGG
聚合函数:
SELECT ID,
STRING_AGG(Country, ',')
FROM tab
GROUP BY ID
在相应的 links 尝试 PostgreSQL or SQLServer 演示。
鉴于OracleDB官方文档,可以使用LISTAGG
聚合函数:
SELECT ID,
LISTAGG(Country, ',') WITHIN GROUP (ORDER BY Country) Country
FROM tab
GROUP BY ID
在相应的 link.
尝试 OracleDB 演示希望这足够全面,可以帮助未来的人们使用最流行的数据库在字符串上进行聚合。