不等式谓词对SQL子查询的解相关

时间:2018-12-20 13:39:02

标签: sql apache-spark correlated-subquery

我正在尝试去关联看起来像这样的查询:

select A.id, A.other_id A.data, A.data2, 
(select count(*) from B where B.id = A.id and B.data < A.data),
(select count(*) from B where B.id = A.id and B.data < A.data and A.other_id = B.other_id),
(select count(*) from B where B.id = A.id and B.data < A.data and B.sth is True)
from A

我尝试使用类似select ... from A left join B on B.data < A.data where ...的方法,但是结果并不完全相同,而且速度要慢得多。

有没有合理的方法来解相关这样的查询?

我想在不支持谓词不等式的相关子查询中运行此代码。

或者也许有另外一种方法来获得与spark相同的结果。

1 个答案:

答案 0 :(得分:1)

您可以将其替换为条件聚合:

static_assert