代码之家  ›  专栏  ›  技术社区  ›  Tallboy

Postgres:分组内的不同聚合

  •  1
  • Tallboy  · 技术社区  · 5 年前

    我有一个 events

    • 序列号(显示给许多不同购物车会话的“报价”)
    • 签出令牌(单个访问者的购物车会话)
    • 操作(用户使用购物车会话令牌生成的事件类型)

    sequence_id      action_0_unique_count    action_1_unique_count
    1                5                        4
    2                2                        0
    

    我试图计算事件类型的不同数量( action 枚举列)每个签出会话,按序列id分组

    enter image description here

    下面是一个图像示例,说明我要为第2列选择哪些行。第3列类似,除了 WHERE action = 1

    1 回复  |  直到 5 年前
        1
  •  3
  •   Gordon Linoff    5 年前

    可以使用条件聚合:

    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;