table - id, user_id, amount, type int(1), timestamp.
型1-借記 0-信貸如何獲得2不同類型的交易的金額的差異在MySQL
我想獲得用戶的當前餘額,所有學分即總和 - 總和的所有借記
任何人都可以幫助我在這個查詢?
table - id, user_id, amount, type int(1), timestamp.
型1-借記 0-信貸如何獲得2不同類型的交易的金額的差異在MySQL
我想獲得用戶的當前餘額,所有學分即總和 - 總和的所有借記
任何人都可以幫助我在這個查詢?
如果信用是積極和借方是負的,那麼就這樣做:
SELECT SUM(amount), 0)
FROM t
WHERE user_id = 1;
如果他們都是積極的,你可以這樣做:
SELECT SUM(CASE WHEN type = 2 THEN -amount ELSE amount END)
FROM t
WHERE user_id = 1
(假設類型= 1是信用和類型= 2是借方。)
如果你想要全部用戶,只需將WHERE
子句更改爲GROUP BY user_id
即可。
編輯:要回答你的問題有關任何條目給定用戶:也許它應該返回NULL
如果你問的是誰沒有在表中的用戶(例如,作爲左的一部分加入?) ,但如果你真的想要零,你可以說COALESCE(SUM(...), 0)
。
SELECT user_id,
SUM(CASE WHEN type = '0' THEN 1 ELSE 0 END) totalDebit,
SUM(CASE WHEN type = '1' THEN 1 ELSE 0 END) totalCredit
FROM table
GROUP BY user_id
我看起來像這樣計算的用戶有多少次了信用卡或借記卡,但我相信這個問題是問如何計算的當前餘額。 –
嘗試此查詢
SELECT user_id,
SUM(CASE WHEN type = '1' THEN amount ELSE 0 END) totalDebit,
SUM(CASE WHEN type = '0' THEN amount ELSE 0 END) totalCredit
FROM table
GROUP BY user_id
感謝您的快速響應。如果沒有任何特定用戶的條目,它將返回NULL。如何在沒有用戶輸入的情況下返回0.00? –