SUM 聚合不适用于 DRUID 的空子查询

SUM aggregation do not work on empty subqueries with DRUID

假设我在 Druid 上执行以下两个查询:

SELECT COUNT(DISTINCT field_1) FROM my_table WHERE field_2 = 10 
SELECT COUNT(DISTINCT field_1) FROM my_table WHERE field_2 = 11 

我尝试将两个计数合并到一个查询中,并使用如下所示的总和聚合:

Select q1.totalcount + q2.totalcount FROM 
(SELECT COUNT(DISTINCT field_1) AS totalcount 
FROM my_table WHERE field_2 = 10) as q1,
(SELECT COUNT(DISTINCT field_1) AS totalcount 
FROM my_table WHERE field_2 = 11) as q2

除非两个计数之一 returns 0 行,否则效果很好。

在这种情况下,我会收到一条 Query returned no data 消息,即使两个子查询之一返回了一些结果,我也没有 SUM 查询的任何最终结果。

我该如何解决这个问题?

为什么不把所有的都算在一起呢?:

SELECT COUNT(DISTINCT(field_1)) FROM my_table WHERE field_2 in (10,11) 

还有你计算计数的方式,如果两个计数选择之间有任何共同点 field_1,你将计算它们两次。

CASE 表达式使用条件聚合:

SELECT COUNT(DISTINCT CASE WHEN field_2 = 10 THEN field_1 END) +
       COUNT(DISTINCT CASE WHEN field_2 = 11 THEN field_1 END)
FROM my_table 
WHERE field_2 IN (10, 11);

请注意,如果 field_1 值在 field_2 = 10field_2 = 11 这两个组中都是通用的,它将被计算在两个组中,就像您的代码一样.