postgresql - 使用交叉表的 PostgreSQL 查询
问题描述
现在,我倾向于 postgreSQL。在研究中,我在 postgreSQL 中发现了 crosstab。我尝试将此功能应用于我的自定义表格,但它不起作用。请帮忙!!
这是我的桌子
year | type | count
------+----------+----
2015 | AS | 6
2015 | HY | 6
2015 | KR | 6
2015 | SE | 6
2016 | AS | 2
2016 | HY | 2
2016 | KR | 2
2016 | SE | 2
2017 | AS | 1
2017 | HY | 1
2017 | KR | 1
2017 | SE | 1
2018 | AS | 2
2018 | HY | 2
2018 | KR | 2
2018 | SE | 2
我想像这样改变这张桌子
year | AS | HY | KR | SE |
----------------------------------
2015 | 6 | 6 | 6 | 6 |
2016 | 2 | 2 | 2 | 2 |
2017 | 1 | 1 | 1 | 1 |
2018 | 2 | 2 | 2 | 2 |
为了制作该表,我使用交叉表设计了查询,但不起作用!
请让我知道这个问题的查询。
解决方案
你可以在没有 的情况下实现这一点Crosstab
,你可以使用Aggregate
函数。
询问 :
select
year,
max(counts) filter (where type = 'AS') as "AS",
max(counts) filter (where type = 'HY') as "HY",
max(counts) filter (where type = 'KR') as "KR",
max(counts) filter (where type = 'SE') as "SE"
from
tbl
group by
year
order by
year asc
如果您尝试学习Crosstab
这个答案真的很棒,并且很好地解释了如何使用 pivot Crosstab
。
推荐阅读
- java - 检查句子中的每个单词是否是回文
- python - 使用子图时如何使用 matplotlib.pyplot.xticks 或类似的?
- java - 将卡片视图放在片段内
- php - 如何在 PHP 中解析这个数组?
- html - 如果不缩放,粗体字体在移动设备上看起来很奇怪
- javascript - 需要在angular中基于json做动态行列
- javascript - 如何在本机应用程序中实现暗模式
- office365 - 使用 EWS 托管 SOAP API 获取事件的参考附件
- python - 这是一个正确的通用 __repr__ 定义吗?
- javascript - 以 Angular 8 下载和播放流音频