sql - 如何在两列中聚合和分组?
问题描述
Name age gender
competition1 3 0
competition1 3 1
competition1 2 0
competition1 2 1
competition2 3 0
competition2 3 1
competition3 1 0
我想在下表中查询转换为下表。
Name Array of ages Array of gender
'competition1', {'3','2'} {'0','1'}
'competition2', {'3'} {'0','1'}
'competition3', {'1'} {'0'}
解决方案
您可以按 聚合name
,并使用array_agg(distinct ...)
来生成没有重复的数组。请注意,您还可以根据需要对数组中的值进行排序:
select
name,
array_agg(distinct age order by age desc) ages,
array_agg(distinct gender order by gender) genders
from mytable
group by name
推荐阅读
- c - 使用 fork 在 C 中创建多个子进程
- web-crawler - 我可以在 Stormcrawler 中按锚点或标题过滤外链吗?
- python - Numpy:对数组每行的元素应用公式
- flutter - 如何在 Flutter 中更改 BLoC 中的事件?
- flutter - 颤振 HTTP 问题
- visual-studio-code - 内联样式标记未在 html 文件中获得语法高亮显示
- splunk - 在 splunk 仪表板中,应用用户输入更改的最有效方法是什么?
- php - 解析符号字符串对以构建 sql 的 WHERE 子句的条件表达式
- jenkins - 我正在尝试在 jenkins 上运行 selenium 脚本,但出现以下错误(我还附上了我要运行的脚本)
- python - 如何将抓取的数据添加到我的列表中,我无法打印“ranking_list”并且它不能为空