Подсчитать всех пользователей с определенной суммой суммы - PullRequest
2 голосов
/ 06 мая 2019

У меня есть таблица базы данных, аналогичная приведенной ниже.

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

Каждый пользователь регистрирует платеж, что означает, что у каждого пользователя может быть несколько записей.

Теперь мне нужно получить номерпользователей, сумма сумм которых превышает 10 $.

Вот некоторый базовый код, который я написал, но он дает мне много результатов вместо одного подсчитанного числа, но я не понимаю, почему.

Я имею в виду,вероятно, потому что я группирую по, но мне нужно посчитать его по идентификатору пользователя, поэтому я не знаю, как сделать это правильно.

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

GROUP BY user_id

HAVING amount > 10

Этот вопрос может показаться глупым, но, пожалуйста, скажите мне, что я делаю неправильно

1 Ответ

4 голосов
/ 06 мая 2019

Использовать подзапрос:

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

Обратите внимание, что я повторил выражение. Вы связали sum() с тем же именем, что и столбец. Я никогда не могу вспомнить, ссылается ли having в MySQL на столбец или псевдоним. Таким образом, запрос повторяет выражение, чтобы избежать потенциальных проблем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...