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? –