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 = 10
和 field_2 = 11
这两个组中都是通用的,它将被计算在两个组中,就像您的代码一样.
假设我在 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 = 10
和 field_2 = 11
这两个组中都是通用的,它将被计算在两个组中,就像您的代码一样.