【发布时间】:2020-05-07 10:15:38
【问题描述】:
我有一个查询,该查询本质上是按 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 很糟糕,所以我可能犯了一个非常简单的错误。非常感谢任何建议。
【问题讨论】:
标签: kdb