sql - 过滤器表达式中的 Hive 查询子查询
问题描述
我正在使用 spark sql 创建查询。实际查询的大小有点大,但我遇到的问题是以下错误
Error in SQL statement: AnalysisException: IN/EXISTS predicate sub-queries can only be used in a Filter: Aggregate
查询的以下部分引起了麻烦。我不知道
select col1, col2,
sum(case
WHEN snoozed_until is NULL
AND hired is NULL
AND lower(profile_archive_status) = 'true'
AND profile_id NOT IN
(SELECT profile_id
FROM candidates_feedback f
WHERE lower(f.a1) LIKE '%no%') THEN
1
ELSE 0 END) Archived,
sum(case
WHEN snoozed_until is NULL
AND hired is NULL
AND lower(profile_archive_status) = 'true'
AND profile_id IN (SELECT profile_id FROM candidates_feedback f WHERE lower(f.a1) LIKE '%no%') THEN 1 ELSE 0 END) Rejected,
from table;
解决方案
将左连接与子查询一起使用:
select col1, col2,
sum(CASE
WHEN snoozed_until is NULL
AND hired is NULL
AND lower(profile_archive_status) = 'true'
AND p.profile_id IS NULL THEN 1 ELSE 0
END) Archived,
sum(CASE
WHEN snoozed_until is NULL
AND hired is NULL
AND lower(profile_archive_status) = 'true'
AND p.profile_id IS NOT NULL THEN 1 ELSE 0
END) Rejected
from table t
left join
(SELECT DISTINCT profile_id
FROM candidates_feedback f
WHERE lower(f.a1) LIKE '%no%') p on t.profile_id=p.profile_id
推荐阅读
- protocol-buffers - Envoy/GRPC 无法解码二进制数据 - 错误的线型
- callback - FusedLocationProvider 在 Worker / CoroutineWorker 中不起作用
- node.js - 使用节点的 fs 复制 pdf 会生成不同的文件
- android - Firebase 应用程序检查在 android 上破坏应用程序
- elasticsearch - ElasticSearch Nest 客户端 Ver 7.13 - Id 字段值未设置为 _id 字段值
- json - 如何在 React 中使用 useState、useEffect 和 axios auth 映射 json 对象?
- windows - 如何使用批处理文件查找包含括号的文件
- r - 重新排序 ggplot2 中的图形
- python - Python pandas datareader 0.4.1 在 daily.py 中添加标题
- c# - 如果捕获到特定异常,则返回到引发异常的行下方的代码