有没有人知道如何在PostgreSQL中创建交叉表查询?
例如,我有下表:
Section Status Count
A Active 1
A Inactive 2
B Active 4
B Inactive 5
Run Code Online (Sandbox Code Playgroud)
我想查询返回以下交叉表:
Section Active Inactive
A 1 2
B 4 5
Run Code Online (Sandbox Code Playgroud)
这可能吗?
创建用于计算表中数据出现次数的列的最佳方法是什么?该表需要按一列分组.
我见过
SELECT
sum(CASE WHEN question1 = 0 THEN 1 ELSE 0 END) AS ZERO,
sum(CASE WHEN question1 = 1 THEN 1 ELSE 0 END) AS ONE,
sum(CASE WHEN question1 = 2 THEN 1 ELSE 0 END) AS TWO,
category
FROM reviews
GROUP BY category
Run Code Online (Sandbox Code Playgroud)
其中question1的值可以是0,1或2.
我也看过使用它的一个版本 count(CASE WHEN question1 = 0 THEN 1)
然而,随着question1的可能值的数量增加,这变得更加麻烦.有没有一种方便的方法来编写此查询,可能会优化性能?
PS.我的数据库是PostgreSQL
我每月都有时间序列数据,我想对每个ID进行求和,按月分组,然后将月份名称作为列而不是行.
+----+------------+-------+-------+
| id | extra_info | month | value |
+----+------------+-------+-------+
| 1 | abc | jan | 10 |
| 1 | abc | feb | 20 |
| 2 | def | jan | 10 |
| 2 | def | feb | 5 |
| 1 | abc | jan | 15 |
| 3 | ghi | mar | 15 |
Run Code Online (Sandbox Code Playgroud)
+----+------------+-----+-----+-----+
| id | extra_info | jan | feb | mar …Run Code Online (Sandbox Code Playgroud) 我有一个看起来像这样的数据集:
我想将所有co值汇总在一行中,因此最终结果如下所示:
看起来很容易,对吧?只需crosstab按照本答案中的建议使用 编写查询。问题是这要求我CREATE EXTENSION tablefunc;和我没有对我的数据库的写访问权限。
谁能推荐一个替代方案?