hive查询

gj3fmq9x  于 2021-06-02  发布在  Hadoop
关注(0)|答案(1)|浏览(409)

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

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

我需要编写一个查询,检查键(比如k1)是否Map到任何行中的特定值(比如v2)。如果它这样做,c3列中的值将被视为1,否则为0。
我很感激任何帮助。

xdnvmnnf

xdnvmnnf1#

下面的查询应该给出您想要的结果。子查询标识所有 C1 Map到中某个值的值 C2 至少一次。如果是这样,那么我们呈现 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

相关问题