微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

通过添加其他两个表的列在Redshift中创建表

如何解决通过添加其他两个表的列在Redshift中创建表

我想通过添加其他两个表的列在Redshift中创建一个表。

表1

Table 1 data


表2

Table 2 data

要在以下条件下创建新表

  1. 如果table1.sid = table2.sid
    然后是t1.totalcorrect + t2.totalcorrect,t1.totalquestions + t2.totalquestions。是s4到s7
  2. 两个表中的其他数据均是

预期输出

Output table

使用联接结果表只给我S4到S7,而不是其他所需的列。请帮助我

解决方法

那是full join

select 
    coalesce(t1.sid,t2.sid) sid,coalesce(t1.totalcorrect,0) + coalesce(t2.totalcorrect,0) totalcorrect,coalesce(t1.totalquestions,0) + coalesce(t2.totalquestions,0) totalquestions
from t1 
full join t2 on t2.sid = t1.sid
,

有两种方法可以做到这一点,我不确定在Redshift中哪种方法更快。一个是union allgroup by

select sid,sum(totalcorrect) as totalcorrect,sum(totalquestions) as totalquestions
from ((select sid,totalcorrect,totalquestions
       from t1
      ) union all
      (select sid,totalquestions
       from t2
      )
     ) t
group by sid;

第二个使用full join,我建议使用using子句:

select sid,0) as totalcorrect,0) as totalquestions
from t1 full join
     t2
     using (sid);

这两种方法之间存在差异。第一个保证结果集中的每个sid有一行,即使其中一个表中有重复项也是如此。第一种方法还将NULL的{​​{1}}值合并为一行。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。