Postgres: отчетливая агрегация внутри группы по - PullRequest
1 голос
/ 28 марта 2020

У меня есть таблица events с 3 столбцами:

  • sequence_id («предложение», отображаемое для множества различных сеансов корзины)
  • checkout_token (сеанс корзины для одного посетитель)
  • действие (тип события, сгенерированного пользователем с этим токеном сеанса корзины)

Я хочу вывести данные в следующем (НЕ действительные числа в соответствии с моим изображением, просто фиктивный пример выходного формата):

sequence_id      action_0_unique_count    action_1_unique_count
1                5                        4
2                2                        0

я пытаюсь подсчитать ОТЛИЧНОЕ количество типов событий (action перечисление столбец) ЗА сеанс проверки, сгруппированный по sequence_id

enter image description here

Вот пример изображения, в котором я пытаюсь выбрать строки для столбца 2. Столбец 3 будет аналогичным, за исключением WHERE action = 1

1 Ответ

3 голосов
/ 28 марта 2020

Вы можете использовать условное агрегирование:

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;
...