我想计算Hive表中的行,同时在单个查询中计算子集(基于WHERE子句中的某些条件)。我在这个post中遇到了CTE,我认为它适用于非Hive SQL。我研究了一下,发现Hive有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有没有解决方法或类似工作的想法?
答案 0 :(得分:2)
不需要公用表表达式。条款用例总结条件时的用例:
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
;