【问题标题】:hive query to map keys to multiple values蜂巢查询将键映射到多个值
【发布时间】:2017-06-27 01:51:31
【问题描述】:

我有一个结构类似于下面的表:

|C1|C2|C3|
|K1|V1|??|
|K1|V2|??|
|K1|V3|??|
|K2|V2|??|

我需要编写一个查询来检查键(比如 K1)是否映射到任何行(比如 V2)中的特定值。如果是,则 C3 列中的值被视为 1,否则为 0。

如果有任何帮助,我将不胜感激。

【问题讨论】:

    标签: sql hadoop hive hql


    【解决方案1】:

    以下查询应该会给出您想要的结果。子查询标识至少一次映射到C2 中某个值的所有C1 值。如果是,那么我们将C3 值渲染为 1,否则我们显示 0。

    SELECT
        t1.C1,
        t1.C2,
        CASE WHEN t2.C1 IS NOT NULL THEN 1 ELSE 0 END AS C3
    FROM yourTable t1
    LEFT JOIN
    (
        SELECT C1
        FROM yourTable
        GROUP BY C1
        HAVING SUM(CASE WHEN C2 = 'V1' THEN 1 ELSE 0 END) > 0
    ) t2
        ON t1.C1 = t2.C1
    

    【讨论】:

    • 非常感谢。虽然我认为联接应该是左联接。
    • @parth 然后让我更新查询。我不知道为什么我被否决了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-11
    相关资源
    最近更新 更多