我希望根据“名称”对两个表 A 和 B 进行外连接,然后减去列“计数”值,如果该行在另一个表中不存在,则替换为 0。有谁知道一个简单的 SQL 查询可以实现这一点吗?
A
name count
ABC 10
DEF 10
GHI 20
B
name count
ABC 20
GHI 30
XYZ 10
RESULT
name count
ABC -10
DEF 10
GHI -10
XYZ -10
谢谢!
(或者如果有一种方法可以使用 Spark DataFrames 来做到这一点,那就太好了!)
最佳答案
使用 spark
,您可以在 name
列上连接两个数据框,coalesce
null
计数为零然后用 B.count
减去 A.count
:
(A.alias("a").join(B.alias("b"), Seq("name"), "outer")
.selectExpr("name", "coalesce(a.count, 0) - coalesce(b.count, 0) as count")).show
+----+-----+
|name|count|
+----+-----+
| DEF| 10|
| GHI| -10|
| XYZ| -10|
| ABC| -10|
+----+-----+
关于mysql - SQL 查询/Spark 数据帧外连接并减去两个表的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46356438/