【问题标题】:SQL full outer join + group by + count column [closed]SQL完全外连接+分组依据+计数列[关闭]
【发布时间】:2020-05-21 18:22:08
【问题描述】:

我有两张桌子:

currency_table_1

ID  -  currency_1
------------------
01  -   EUR
02  -   EUR
03  -   EUR
04  -   USD
05  -   USD
06  -   USD

currency_table_2

ID  -  currency_2
------------------
01  -   EUR
02  -   EUR
04  -   JPY
05  -   JPY
06  -   JPY
07  -   JPY

我想对 ID 上的两个表进行 FULL OUTER JOIN。在结果表中,我想添加一个 COUNT 列,该列将两个表的唯一货币组合的出现次数相加。如果另一个表中分别没有 ID/货币,则该组合中的货币值将显示为 [null]。对于上面的示例,结果表如下所示:

Count -  currency_1  -  currency_2
----------------------------------
3     -     USD      -    JPY
2     -     EUR      -    EUR
1     -     EUR      -    [null]
1     -     [null]   -    JPY

sql 长什么样子?我熟悉 group by 和 joins,但到目前为止还没有成功。 感谢您的意见!

【问题讨论】:

  • 请不要让我们编写您的代码。展示你能做什么。请在代码问题中给出minimal reproducible example--cut & paste & runnable code,包括最小的代表性示例输入为代码;期望和实际输出(包括逐字错误消息);标签和版本;明确的规范和解释。给出您可以给出的最少代码,即您显示的代码可以通过您显示的代码扩展为不正常。 (调试基础。)对于包含 DBMS 和 DDL(包括约束和索引)和输入为格式化为表的代码的 SQL。 How to Ask

标签: sql group-by count full-outer-join


【解决方案1】:

我想这就是你想要的:

select ct1.currency_1, ct2.currency_2, count(*)
from currency_table1 ct1 full join
     currency_table2 ct2
     on ct1.id = ct2.id
group by ct1.currency_1, ct2.currency_2;

【讨论】:

  • full outer join 你的意思是?只是为了清楚起见......
  • @TheImpaler 。 . .我对full join 没有什么不清楚的地方。我经常使用left join,在极少数情况下使用right join
猜你喜欢
  • 2017-07-05
  • 2012-01-06
  • 2012-09-18
  • 1970-01-01
  • 2017-03-05
  • 1970-01-01
  • 2015-12-11
  • 2017-04-10
相关资源
最近更新 更多