Postgres:分组依据内的不同聚合

Postgres: distinct aggregation within group by

我有一个 events table 有 3 列:

我想输出以下数据(根据我的图像不是实数,只是输出格式的虚拟示例):

sequence_id      action_0_unique_count    action_1_unique_count
1                5                        4
2                2                        0

我正在尝试计算每个结帐会话的不同事件类型数(action 枚举列),按 sequence_id

分组

这是我尝试对第 2 列 select 行进行处理的图像示例。第 3 列类似,除了 WHERE action = 1

您可以使用条件聚合:

select sequence_id,
       count(distinct checkout_token) filter (where action = 0),
       count(distinct checkout_token) filter (where action = 1)
from events
group by sequence_id;