簡體   English   中英

SQL查詢/ Spark數據幀到外部聯接並減去兩個表的值

[英]SQL query/Spark dataframe to outer join and subtract values of two tables

我希望基於“名稱”對兩個表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計數coalesce為零,然后將A.countB.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|
+----+-----+

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM