Mysql
比較表之間的列總和
我正在嘗試為這個問題創建一個查詢。
假設我有這兩個表:
Acceptor
桌子:ID TYPE QTY -- ---------- ------------------ 1 AB+ 1 2 O- 5 3 O+ 1 4 O- 5 5 O- 5 6 AB- 1 7 AB+ 1
Donor
桌子:ID TYPE QTY -- ---------- ------------------ 1 AB+ 2 2 O- 5 3 O+ 3 4 O- 5 5 O- 3 6 AB- 1 7 AB+ 3
Acceptor.QTY
我需要一個查詢來選擇血液的類型,以及在 SUM大於SUM 的情況下數量之間的差異Donor.QTY
。所以在這種情況下,捐贈者的 O- => 5 + 3 + 5 = 13 和接受者的 O- => 5 + 5 + 5 = 15。
查詢必須返回
O- 2
您可以在每個表上使用 group by 來獲得您正在尋找的結果,然後將整個事物包裝在一個視圖中以對其進行過濾。看到這個小提琴:https ://www.db-fiddle.com/f/d313vqnsTkiXDXfiEPTwLt/4
Select shortages.Type, shortages.Shortage from ( Select a.Type, a.QTY-d.QTY Shortage from (Select Type, sum(QTY) QTY from Acceptors group by Type) a inner join (Select Type, sum(QTY) QTY from Donors group by Type) d on a.type = d.type ) shortages where shortages.shortage > 0
如果您需要覆蓋捐助者表中根本不存在值的情況,您應該將內連接替換為左連接,並使用 case 語句或 ISNULL 將空值替換為零。