Hive 使用CTE的配置单元上的子集计数

Hive 使用CTE的配置单元上的子集计数,hive,hiveql,Hive,Hiveql,我想计算配置单元表中的行数,同时计算单个查询中的子集数(基于WHERE子句中的某些条件)。我在这篇文章中遇到了CTE,我认为它适用于非配置单元SQL。我做了一些研究,发现蜂巢有CTE。但是,当我尝试以下操作时,此表单在Hive中不起作用: WITH MY_TABLE AS ( SELECT * FROM orig_table WHERE base_condition ) SELECT (SELECT COUNT(*) FROM MY_TABLE) AS total

我想计算配置单元表中的行数,同时计算单个查询中的子集数(基于WHERE子句中的某些条件)。我在这篇文章中遇到了CTE,我认为它适用于非配置单元SQL。我做了一些研究,发现蜂巢有CTE。但是,当我尝试以下操作时,此表单在Hive中不起作用:

WITH MY_TABLE AS (
    SELECT *
    FROM orig_table
    WHERE base_condition
)
SELECT
    (SELECT COUNT(*) FROM MY_TABLE) AS total,
    (SELECT COUNT(*) FROM MY_TABLE WHERE cond_1) AS subset_1,
    ...
    (SELECT COUNT(*) FROM MY_TABLE WHERE cond_n) AS subset_n;

是否有人对Hive有解决方法或类似的工作思路?

不需要公共表表达式。当子句在条件上求和时的用例:

select count(1) as total
    , sum(case when cond_1 then 1 else 0 end) as subset_1
    --...
    , sum(case when cond_n then 1 else 0 end) as subset_n
from orig_table
where base_cond
;