我不太确定如何表达这个问题,这是我在生成或找到答案时遇到问题的部分原因。
给出下表:
ID | 班级 | 地区编号 | 秩 | irrelevant_column_1_of_10 |
---|---|---|---|---|
1个 | 1级 | A | 超过 | 无关紧要的价值 |
2个 | 1级 | A | 超过 | |
3个 | 1级 | A | 在下面 | |
4个 | 1级 | 乙 | 超过 | |
5个 | 1级 | 乙 | 超过 | |
6个 | 1级 | C | 在下面 |
如何为每一行生成以下报告class=class1
(region_id=A, over_count: 2, under_count: 1),
(region_id=B, over_count: 2, under_count: 0),
(region_id=C, over_count: 0, under_count: 1),
我的 SQL 很基础。我试过了GROUP BY
,但不能让它做更多的事情:
(A, over, 2),
(A, under, 1),
(B, over, 2),
(B, under, 0),
(C, over, 0),
(C, under, 1)
您可以使用过滤聚合:
我在 MS SQL Server 中使用过的一种方法是基于
SUM
表达式CASE
,我认为它可以直接在 postgres 中使用: