【问题标题】:Subsets count on Hive using CTE子集依靠 Hive 使用 CTE
【发布时间】:2015-07-01 07:30:43
【问题描述】:

我想计算 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 有解决方法或类似的工作想法?

【问题讨论】:

    标签: hive hiveql


    【解决方案1】:

    不需要公用表表达式。使用 case when 子句对条件求和:

    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
    ;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-08-01
      • 1970-01-01
      • 2016-02-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-16
      相关资源
      最近更新 更多