我想根据'name'在两个表A和B上进行外部连接,然后减去列'count'值,如果行不得替换为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|
+----+-----+