相关疑难解决方法(0)

PostgreSQL交叉表查询

有没有人知道如何在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)

这可能吗?

sql postgresql pivot case crosstab

180
推荐指数
4
解决办法
17万
查看次数

SQL计数列

创建用于计算表中数据出现次数的列的最佳方法是什么?该表需要按一列分组.

我见过

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

sql postgresql group-by count aggregate-filter

14
推荐指数
1
解决办法
1万
查看次数

按月计算并将月份作为列

背景

我每月都有时间序列数据,我想对每个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)

sql postgresql pivot case crosstab

4
推荐指数
2
解决办法
5693
查看次数

如何在不编写函数的情况下在 postgresql 中透视或交叉表?

我有一个看起来像这样的数据集:

必须旋转

我想将所有co值汇总在一行中,因此最终结果如下所示:

在此处输入图片说明

看起来很容易,对吧?只需crosstab按照本答案中的建议使用 编写查询。问题是这要求我CREATE EXTENSION tablefunc;和我没有对我的数据库的写访问权限。

谁能推荐一个替代方案?

postgresql pivot crosstab

4
推荐指数
1
解决办法
1万
查看次数

标签 统计

postgresql ×4

crosstab ×3

pivot ×3

sql ×3

case ×2

aggregate-filter ×1

count ×1

group-by ×1