0

我正在使用 SparkSQL。我有下表:

部门:

dep_id | emp_id | age
0 | 0 | 21
0 | 1 | 53
0 | 3 | 42
0 | 5 | 58
1 | 4 | 36
1 | 8 | 48
2 | 2 | 54
2 | 6 | 31
2 | 7 | 30
2 | 9 | 54

但是,我无法在 SparkSQL 中成功执行以下查询:

SELECT   A.dep_id,
         A.emp_id,
         A.age,
         (SELECT  MAX(age) FROM department B WHERE A.dep_id = B.dep_id) max_age
FROM     department A
ORDER BY 1,2

任何人都可以请帮助我可能出错的地方。

谢谢

4

2 回答 2

1

不需要子查询,您可以使用窗口函数执行此操作:

SELECT   dep_id,
         emp_id,
         age,
         MAX(age) OVER(PARTITION BY dep_id) max_age
FROM     department 
ORDER BY 1,2
于 2020-01-13T10:00:15.793 回答
0

你应该声明表alias

SELECT A.dep_id, A.emp_id, A.age,
      (SELECT MAX(b.age) FROM department B WHERE A.dep_id = B.dep_id) max_age
FROM department A;
于 2020-01-13T09:52:49.427 回答