【发布时间】:2016-03-03 05:46:39
【问题描述】:
table - id, user_id, amount, type int(1), timestamp.
类型 1- 借记 0- 积分
我想获取用户的当前余额,即所有贷方的总和 - 所有借方的总和
谁能帮我解决这个问题?
【问题讨论】:
标签: mysql
table - id, user_id, amount, type int(1), timestamp.
类型 1- 借记 0- 积分
我想获取用户的当前余额,即所有贷方的总和 - 所有借方的总和
谁能帮我解决这个问题?
【问题讨论】:
标签: 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
(假设 type = 1 是贷方,type = 2 是借方。)
如果您希望 所有 用户使用它,只需将 WHERE 子句更改为 GROUP BY user_id。
编辑:回答您关于没有给定用户的条目的问题:如果您要求的用户不在表(例如,作为左连接的一部分?),但如果你真的想要零,你可以说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
【讨论】: