SQL查询/SPARK DATAFRAME到外连接并减去两个表的值



我想根据'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|
+----+-----+

相关内容

  • 没有找到相关文章

最新更新