计算所有具有特定金额的用户

时间:2019-05-06 14:42:37

标签: mysql sql

我有与下面类似的数据库表。

id     user_id     amount    
1      5546        1000
2      5546        52
3      53          10000
4      45          120
5      5546        10

每个用户的付款都记录在这里,这意味着每个用户可以有多个记录。

现在,我需要获得总金额超过10 $的用户数。

这是我写的一些基本代码,但是它给了我很多结果,而不是一个数,但是我不明白为什么。

我的意思是,可能是因为我在分组,但是我需要按用户ID进行计数,所以不知道如何正确设置。

SELECT count(*), sum(amount) as amount FROM `revenues` 

GROUP BY user_id

HAVING amount > 10

这个问题似乎很愚蠢,但请告诉我我做错了什么

1 个答案:

答案 0 :(得分:4)

使用子查询:

SELECT COUNT(*)
FROM (SELECT sum(amount) as amount
      FROM `revenues` 
      GROUP BY user_id
      HAVING sum(amount) > 10
     ) r;

请注意,我重复了该表达式。您为sum()加上了与列相同的别名。我永远不记得MySQL中的having是指列还是别名。因此,查询重复该表达式只是为了避免潜在的问题。