sql groupby 然后每组值变成列表
时间: 2023-08-20 22:19:41 浏览: 47
好的,针对您的问题,可以通过使用SQL中的GROUP BY语句和GROUP_CONCAT函数来实现每组值变成列表的操作。
假设我们有一个表格students,包含学生姓名和所学科目成绩,如下所示:
| name | subject | score |
| ------- | ------- | ----- |
| Alice | Math | 75 |
| Alice | English | 82 |
| Bob | Math | 90 |
| Bob | English | 85 |
| Charlie | Math | 80 |
| Charlie | English | 88 |
现在我们需要按照姓名分组,并将每个分组的科目成绩转换成一个列表。可以使用以下SQL语句实现:
```sql
SELECT name, GROUP_CONCAT(score) as scores
FROM students
GROUP BY name
```
这个查询将表格按照姓名分组,并使用GROUP_CONCAT函数将每个分组的成绩连接成一个逗号分隔的字符串。最后得到一个表格,其中每个行代表一个分组,第一列为分组的姓名,第二列为该分组的成绩列表,每个成绩之间用逗号分隔。
查询结果如下所示:
| name | scores |
| ------- | --------- |
| Alice | 75,82 |
| Bob | 90,85 |
| Charlie | 80,88 |
这样就实现了每个分组值变成列表的操作。注意,这里得到的是字符串类型的列表,如果需要使用列表数据类型,需要在应用程序中进行转换。