如何使用 hive sql 查询查找表中不存在的行?

问题描述 投票:0回答:2

我的数据是这样的:

身份证 阶段_1 第二阶段
1 A F
1 B G
1 C H
2 A F
2 B G
2 C H
3 A F
3 B G
4 A F
4 B G

我想查找

Stage_1 = A
存在但
Stage_2 = H
不存在的唯一 ID 的数量。这里,对于
ID = 3
ID = 4
,A 存在于
Stage_1
中,但在
Stage_2
中,不存在
H
ID = 3
ID = 4

所以这里的预期结果是 2。

Outer join
不适用,因为我使用 hive sql 终端仅从数据库中的一张表获取数据。

sql hive
2个回答
0
投票

试试这个:

SELECT COUNT(DISTINCT ID)
FROM your_table
WHERE ID IN (
    SELECT ID
    FROM your_table
    WHERE Stage_1 = 'A'
)
AND ID NOT IN (
    SELECT ID
    FROM your_table
    WHERE Stage_2 = 'H'
);

0
投票

您可以尝试将表左连接到自身并计算空值

SELECT COUNT(DISTINCT t1.ID)
FROM your_table t1
LEFT JOIN your_table t2
  ON t2.Stage_1 = t1.Stage_1
    AND t2.Stage_2 = 'H'
WHERE t1.Stage_2 = 'A'
AND t2.ID IS NULL
© www.soinside.com 2019 - 2024. All rights reserved.