Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 查找总数为负的用户数_Python_Sql_Pandas_Sqlite_Transactions - Fatal编程技术网

Python 查找总数为负的用户数

Python 查找总数为负的用户数,python,sql,pandas,sqlite,transactions,Python,Sql,Pandas,Sqlite,Transactions,我试图为下面的解决方案找出一个SQL查询或Python代码 有n个具有各种事务的用户ID。 每个用户ID都有多个事务。 用户ID示例 000e88bb-d302-4fdc-b757-2b1a2c33e7d6 001926be-3245-43fa-86dd-b40ee160b6f9 每个事务都有一个类型 TOPUP Bank_Transaction P2P and a couple more 我想写一个查询,其中 (TOPUP)-(所有其他类型事务的总计)并返回所有用户ID,其中TOPUP

我试图为下面的解决方案找出一个SQL查询或Python代码

有n个具有各种事务的用户ID。 每个用户ID都有多个事务。 用户ID示例

000e88bb-d302-4fdc-b757-2b1a2c33e7d6
001926be-3245-43fa-86dd-b40ee160b6f9
每个事务都有一个类型

TOPUP
Bank_Transaction
P2P
and a couple more
我想写一个查询,其中 (TOPUP)-(所有其他类型事务的总计)并返回所有用户ID,其中TOPUP<所有事务的总计

找到所有的用户谁有更少的充值和更多的开支


我希望我能说清楚吗?

想想追加金额是正的,而其他支出是负的,那么我们只是在寻找负余额的用户

选择用户\u id
从交易
按用户id分组
总金额(当交易类型为“追加”然后是金额-金额结束时)<0

想想追加金额是正的,而其他支出是负的,那么我们只是在寻找负余额的用户

选择用户\u id
从交易
按用户id分组
总金额(当交易类型为“追加”然后是金额-金额结束时)<0

我相信以下可能会产生您想要的结果:-

WITH counter AS (
    SELECT user_id
    FROM transactions AS a 
    WHERE 
        coalesce((SELECT sum(amount) FROM transactions WHERE transaction_type = 'TOPUP' AND user_id = a.user_id),0.0) -
            coalesce((SELECT sum(amount) FROM transactions WHERE transaction_type <> 'TOPUP' AND user_id = a.user_id),0.0) 
            < 0      
    GROUP BY user_id
)
SELECT count() FROM counter;
那么上述结果是:-

  • i、 e.第一个和第三个用户的账户余额为负,而第二个用户的账户余额为正(因此不包括在统计范围内)

我相信以下可能会产生您想要的结果:-

WITH counter AS (
    SELECT user_id
    FROM transactions AS a 
    WHERE 
        coalesce((SELECT sum(amount) FROM transactions WHERE transaction_type = 'TOPUP' AND user_id = a.user_id),0.0) -
            coalesce((SELECT sum(amount) FROM transactions WHERE transaction_type <> 'TOPUP' AND user_id = a.user_id),0.0) 
            < 0      
    GROUP BY user_id
)
SELECT count() FROM counter;
那么上述结果是:-

  • i、 e.第一个和第三个用户的账户余额为负,而第二个用户的账户余额为正(因此不包括在统计范围内)

所以有三个字段:
用户id
交易类型
金额
?是的,有三个字段。所以有三个字段:
用户id
交易类型
金额
?是的,有三个字段。非常感谢,迈克,这真的很有帮助@阿卡什瓦德瓦尼,很好。如果你认为答案对你有帮助,那么请勾选答案。非常感谢,迈克。这真的很有帮助@阿卡什瓦德瓦尼,很好。如果您认为答案对您有帮助,请在答案上打勾。