我有与下面类似的数据库表。
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
这个问题似乎很愚蠢,但请告诉我我做错了什么
答案 0 :(得分:4)
使用子查询:
SELECT COUNT(*)
FROM (SELECT sum(amount) as amount
FROM `revenues`
GROUP BY user_id
HAVING sum(amount) > 10
) r;
请注意,我重复了该表达式。您为sum()
加上了与列相同的别名。我永远不记得MySQL中的having
是指列还是别名。因此,查询重复该表达式只是为了避免潜在的问题。