【发布时间】:2021-07-08 13:47:51
【问题描述】:
我有一个嵌入到系统中的 SQL 查询,到目前为止,该系统在 Athena 中使用引擎版本 1 成功运行。但是它在引擎版本 2 中失败,我无法找出原因。
这是 SQL 的通用版本。它总结了 3 组的人数:成年人、纽约居民和两者的重叠。 (纽约成年人)。
在版本 1 中这有效,但在 v2 中我收到错误“无法解析列 z.id_field”
WITH BASE AS (SELECT person_id, age, state
FROM people
WHERE gender = 'male'
)
,group_a as (
SELECT distinct (person_id) as id_field
FROM BASE
WHERE age > 17
),
group_b as (
SELECT distinct (person_id) as id_field
FROM BASE
WHERE state = 'NY'
)
SELECT CASE WHEN z.id_field is null then 'group_b_only' WHEN r.id_field is null then 'group_a_only' ELSE 'Overlap' END as group
, COUNT (coalesce (z.id_field, r.id_field)) as count
FROM group_a AS z FULL OUTER JOIN group_b as r USING (id_field)
GROUP BY 1;
【问题讨论】:
-
我不认识 Athena,但在某些数据库中,我看到使用 (id_field) 将 z.id_field 和 r.id_field 折叠成一个单独的列 id_field,不附加到 z 或 r。尝试不带 z 前缀的 id_field。
-
@Rup 。 . .
using应该支持两者。 -
@GordonLinoff 我也这么认为,但我又找到了。这是 Oracle 19c,ORA-25154 的 USING 子句的列部分不能有限定符。
-
@Rup 。 . .这真的,真的很奇怪。你应该如何检查外部
join中是否有匹配项? [我不希望你回答这个问题。]
标签: sql amazon-athena