使用下面的MySQL表包含具有相关金额的借方或贷方“操作”,如何选择具有非零“余额”的所有CLIENT_ID?我尝试将表格与自身连接起来以计算所有借方和贷方总计,但某些方法无法正常工作。
CLIENT_ID ACTION_TYPE ACTION_AMOUNT
1 debit 1000
1 credit 100
1 credit 500
2 debit 1000
2 credit 1200
3 debit 1000
3 credit 1000
4 debit 1000
我的MySQL查询不起作用:
SELECT
client_id,
SUM(t_debits) AS debits,
SUM(t_credits) AS credits,
SUM(t_debits)-SUM(t_credits) AS balance
FROM table_name AS t_debits
LEFT JOIN table_name AS t_credits ON t_credits.client_id=t_debits.client_id
WHERE
t_debits.action_type='debit'
AND t_credits.action_type='credit'
AND balance!=0
GROUP BY t_debits.client_id, t_credits.client_id;
我期望的结果是这样的:
CLIENT_ID DEBITS CREDITS BALANCE
1 1000 600 400
2 1000 1200 -200
4 1000 0 1000
我不知道还有什么可以尝试的。任何帮助将是巨大的。
DROP TABLE IF EXISTS my_table;
CREATE TABLE my_table
(transaction_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY
,client_id INT NOT NULL
,action_type VARCHAR(12) NOT NULL
,action_amount INT NOT NULL
);
INSERT INTO my_table(client_id,action_type,action_amount) VALUES
(1 ,'debit', 1000),
(1 ,'credit', 100),
(1 ,'credit', 500),
(2 ,'debit', 1000),
(2 ,'credit', 1200),
(3 ,'debit', 1000),
(3 ,'credit', 1000),
(4 ,'debit', 1000);
SELECT client_id
, SUM(COALESCE(CASE WHEN action_type = 'debit' THEN action_amount END,0)) total_debits
, SUM(COALESCE(CASE WHEN action_type = 'credit' THEN action_amount END,0)) total_credits
, SUM(COALESCE(CASE WHEN action_type = 'debit' THEN action_amount END,0))
- SUM(COALESCE(CASE WHEN action_type = 'credit' THEN action_amount END,0)) balance
FROM my_table
GROUP
BY client_id
HAVING balance <> 0;
+-----------+--------------+---------------+---------+
| client_id | total_debits | total_credits | balance |
+-----------+--------------+---------------+---------+
| 1 | 1000 | 600 | 400 |
| 2 | 1000 | 1200 | -200 |
| 4 | 1000 | 0 | 1000 |
+-----------+--------------+---------------+---------+
问题内容: 我有一个SQL Server 2008表,我需要从中选择一个运行余额 我尝试了相关查询 但是我得到了所有的空值。 预期输出为 问题答案: 您需要自加入表。 输出 SQL字段
问题内容: 我有一个包含以下数据的表: 现在,我需要一个查询,该查询给出以下结果: 是否可以通过一个查询而不使用触发器或存储过程来做到这一点? 问题答案: 简短的回答,是的 更长的答案是,您可以使用变量在向下迭代行时对其进行计数,即 将确保在开始之前@Balance被初始化为0。然后,对于每一行,将@Balance设置为,然后输出计算出的值。 同样值得确定的是ORDER是一致的,否则Balance
问题内容: 我想使用GeoDjango或GeoPy根据方向和距离计算一个点。 例如,如果我的点是(-24680.1613,6708860.65389),我想使用Vincenty距离公式找出北1KM,东1KM,苏尔1KM和西1KM的点。 我能找到的最接近的东西是distance.py(https://code.google.com/p/geopy/source/browse/trunk/geopy/
问题内容: 用MySQL计算中位数的最简单方法(希望不是太慢)是什么?我一直在寻找均值,但是我很难找到一种简单的计算中位数的方法。现在,我将所有行返回给PHP,进行排序,然后选择中间行,但是肯定必须有一个简单的方法可以在单个MySQL查询中完成。 示例数据: 排序给出,因此中位数应为,而其中== 。 问题答案: 在MariaDB / MySQL中: 史蒂夫·科恩(Steve Cohen)指出,在第
问题内容: 我需要在sqlite数据库中计算欧几里得距离。 除了编写和加载用于数学函数的动态库外,有人知道如何在sqlite中计算平方根吗? 我快要在这里http://en.wikipedia.org/wiki/Fast_inverse_square_root求助于快速反平方根算法,尽管它可能会变得比我现在需要的更多乐趣。 另外,很高兴弄清楚如何进行幂运算(这是一个普遍的问题,比单独乘以一个数字更
我需要计算一个数字的平方根,例如或。我如何用Python实现它? 输入可能都是正整数,并且相对较小(比如说不到10亿),但万一不是,有什么东西可能会断裂吗? 注:这是在元讨论一个现有的标题相同的问题后,试图提出一个规范问题。 相关的 python中的整数平方根