У меня есть запрос, который, по сути, выполняет подсчет по групповому ключу в KDB, в котором я хочу рассматривать некоторые группы как одну для целей этого запроса. Упрощенное описание того, что я пытаюсь сделать, - это подсчет заказов по клиентам за месяц, когда у меня есть пара клиентов в базе данных, которые на самом деле являются дочерними предприятиями другого клиента, и я хочу объединить счетчики дочерних компаний. со своей головной организацией. Реальный сценарий намного сложнее этого, и, не вдаваясь в ненужные подробности, достаточно сказать, что я не могу просто группировать по клиентам и манипулировать результатами для объединения счетчиков после выполнения запроса - мне нужно предложение «by» моего запрос, чтобы выполнить слияние напрямую.
В SQL я бы сделал что-то вроде этого:
select customer_id, count(*) as order_count
from orders
order by select case when customer_id = 1 then 2 when customer_id = 3 then 4 else customer_id end
В приведенном выше примере клиент 1 является дочерней компанией клиента 2, клиента 3 является дочерней компанией клиента 4, и каждый другой клиент обрабатывается нормально.
Допустим, эквивалентный код в Q (без манипуляции с клавишами группы):
select order_count:count i by customer_id from orders
Как бы я вставил эквивалентный оператор select case
для управления ключом группы? Я пробовал это, но получил ошибку rank
:
select order_count:count i by $[customer_id=1;2;customer_id=3;4;customer_id] from orders
У меня плохо с Q, поэтому я, вероятно, делаю очень простую ошибку. Приветствуются любые советы.