我的数据是这样的:
身份证 | 阶段_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 终端仅从数据库中的一张表获取数据。
试试这个:
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'
);
您可以尝试将表左连接到自身并计算空值
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