Как посчитать уникальные элементы в столбце и передавать их в другие столбы по условию

Знатоки, просьба помочь с решением задачи.

Есть 3 столбца: дата, заказы и статус заказа. Заказы иногда повторяются, для каждого из них есть 5 разных статусов в отдельном столбце. Нужно создать таблицу: дата, заказ создан (для заказов со статусом placed, заказ отменен (для заказов со статусом cancel). Заказы не должны повторяться/

введите сюда описание изображения


Ответы (1 шт):

Автор решения: Akina
SELECT date,
       SUM(IF(status = 'placed', 1, 0)) AS placed_count,
       SUM(IF(status = 'cancel', 1, 0)) AS canceled_count
FROM source_table
GROUP BY date
ORDER BY date

В синтаксисе clickhouse не уверен, но идея именно такая.

мне же нужно посчитать количество уникальных значений в столбце order_id

Попробуйте, съест ли clickhouse такую конструкцию:

SELECT date,
       COUNT(DISTINCT IF(status = 'placed', order_id, NULL)) AS placed_unique_count,
       COUNT(DISTINCT IF(status = 'cancel', order_id, NULL)) AS canceled_unique_count
FROM source_table
GROUP BY date
ORDER BY date
→ Ссылка