问题1:SQL
有两张数据表A,B,通过SQL语句输出表C
输入表A:
name score_1
张三 90
李四 85
王五 60
孙六 55
输入表B:
name score_2
张三 90
王五 65
孙六 58
朱七 70
输出表C:
name score_1 score_2 maxExam totalScore
张三 90 90 90 180
李四 85 null 85 85
王五 60 65 65 125
孙六 55 58 58 113
朱七 null 70 70 70
*/
我的答案:
select
X.name,A.score_1,B.score_2,
case when A.score_1>B.score_2 or B.score_2 is null then A.score_1
else B.score_2
end as maxExam,
A.score_1+B.score_2 as totalScore
from
(select name from A
union
select name from B
) X
left join
A on X.name=A.name
left join
B on X.name=B.name
;
在hive中执行了一下,结果不对,如下图,原因是+运算缺少nvl函数。