使用GROUP BY将多行数据合并成一行
在数据处理过程中,您可能会遇到这样的表格:每一行代表一个独特的实体,而某些列需要跨这些实体进行整合。当您需要将特定列的多个结果行连接到一行时,就会出现这种情况。
假设有一个名为“ActorsInfo”的表,包含两列:“Movie”和“Actor”。每一行代表电影及其相关演员的组合。您的目标是将此数据转换为一个新表,其中包含“Movie”列和“ActorList”列,后者包含每部电影中所有演员的逗号分隔列表。
为此,SQL的GROUP BY子句派上用场。GROUP BY允许您根据一个或多个列的值对行进行分组,然后应用聚合函数来计算每个组内的汇总信息。
这里的关键是string_agg()聚合函数。它连接来自指定列的值,并用您选择的定界符分隔。在本例中,语法如下:
<code class="language-sql">SELECT Movie, string_agg(Actor, ', ') AS ActorList FROM ActorsInfo GROUP BY Movie;</code>
通过在SELECT和GROUP BY子句中都指定“Movie”,按电影标题对行进行分组,并通过连接用逗号分隔的Actor值来计算ActorList列。
结果是一个新表,其中每一行代表一部独特的电影,“ActorList”列包含参与该电影的所有演员的完整列表。
以上是如何使用 SQL 的 GROUP BY 子句将多行数据合并为一行?的详细内容。更多信息请关注PHP中文网其他相关文章!