mysql - 统计所有具有特定金额总和的用户

标签 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

这个问题可能看起来很愚蠢,但请告诉我我做错了什么

最佳答案

使用子查询:

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

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

关于mysql - 统计所有具有特定金额总和的用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56007463/

相关文章:

mysql - 从访问日志表计算每小时的访问量

php - MySQL 一个真正的 LIKE 语句

sql - 如何使用sql区分重复记录的第一个和其余的?

mysql - 如何从匹配两个相似列的表中选择不同的 ID?

php - SQL左连接数组部分为空

php - 我想在循环外使用变量,但在 while 循环中定义变量

sql - 在 Oracle 中使用聚合旋转/透视表

mysql - SQL Server 以外的其他 DBMS 是否使用了模式?

mysql - 在 DISTINCT 条件中选择 DISTINCT 列

php:Mysql:题库数据库设计