Как я могу использовать array_agg с условием? - PullRequest
0 голосов
/ 18 июня 2019

У меня есть таблица со списком потенциальных клиентов, их деятельностью и торговым представителем. Каждый клиент может иметь до 1 торгового представителя. Я построил сводную таблицу, в которой я агрегирую активность клиентов, группирую ее по торговому представителю и фильтрую по дате создания клиента. Это НЕ когорта (customers не все соответствуют scheduled_flights, а скорее это снимок активности за определенный период времени). Это выглядит примерно так:

enter image description here

Теперь, в дополнение к общему количеству клиентов, я также хотел бы вывести массив этих реальных клиентов. Поле customers в настоящее время рассчитывается путем выполнения sum(is_customer) as customers, а затем группирования по торговому представителю. Чтобы построить массив, я попытался сделать array_agg(customer_name), который выводит список всех имен клиентов - мне просто нужен список имен, которые также удовлетворяют условию is_customer = 1, но я не могу использовать это как пункт where, поскольку он будет отфильтровывать другие действия, такие как регулярные и завершенные рейсы для клиентов, которые не были новыми.

1 Ответ

2 голосов
/ 18 июня 2019

Это, вероятно, должно работать:

array_agg(case when is_customer = 1 then customer_name end) within group (order by customer_name)

Снежинка должна игнорировать NULL значения в агрегации.

...