Mysql

比較表之間的列總和

  • January 23, 2019

我正在嘗試為這個問題創建一個查詢。

假設我有這兩個表:

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 將空值替換為零。

引用自:https://dba.stackexchange.com/questions/227890