Подсчет и сумма условия больше чем - PullRequest
0 голосов
/ 16 февраля 2020

У меня есть стол.

enter image description here

Я хочу подсчитать для тех пользователей, у которых сумма монет превышает 2000. Для суммирования я возьму только те строки, в которых дебетуется тип транзакции.

мой запрос - это что-то ===>

SELECT COUNT(*)  FROM user_coins_log
GROUP BY user_id
HAVING SUM(if(transaction_type = 'Debited',coin,0))>20000

Но вместо одного подсчета я получаю много строк подсчета. Как решить эту проблему.

Ответы [ 2 ]

2 голосов
/ 16 февраля 2020

Используйте два уровня агрегации:

SELECT COUNT(*)
FROM (SELECT user_id, SUM(coin) as sum_debits
      FROM user_coins_log
      WHERE transaction_type = 'Debited'
      GROUP BY user_id
      HAVING sum_debits >20000
     ) u;
0 голосов
/ 16 февраля 2020

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

Выполнение фильтрации по типу транзакции в предложении where немного проще.

select count(user_id) from (
  select user_id
  from user_coins_log
  where transaction_type = 'Debited'
  group by user_id
  having sum(coin) > 2000
) indebted

Попробуй .

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