Множественное условие для одного столбца не работает Mysql

#mysql

Вопрос:

У меня есть таблица в mysql «razorpayfailpayments», и я хочу подсчитать другой «метод»(источник сбоя платежа) в mysql

 id              method              date                        hour                bank    
1               upi                 2021-07-07                  16                  1   
2               upi                 2021-07-07                  16                  1
3               wallet              2021-07-07                  16                  1
4               card                2021-07-07                  16                  1
5               netBanking          2021-07-07                  16                  1
 

Я попытался использовать следующий код

 select COUNT(rf.id) as total,COUNT(case when method = 'upi' then 1 else 0 end) as upicount
from razorpayfailpayments rf 
where rf.date= '2021-07-07' AND rf.hour= '16' AND rf.bank= '1'
 

Но,показывая мне значения upi=»3″, я хочу получить результат в виде upi=2 и кошелька=1,карты=1, NetBanking=1 в качестве ответа

Комментарии:

1. Вам нужны group ваши результаты, что-то вроде select rf.method, COUNT(rf.id) as total, from razorpayfailpayments rf where rf.date= '2021-07-07' AND rf.hour= '16' AND rf.bank= '1' Group by method

2. @AndreaOlivato:как я могу подсчитать различные методы ? кошелек для карт upi netbanking 2 1 1 1

3. COUNT(case when method = 'upi' then 1 else 0 end) равнозначно COUNT(*) . Используйте SUM(case when method = 'upi' then 1 else 0 end) или COUNT(case when method = 'upi' then 1 end) вместо этого.

4. Но показывать мне upi=»3″ ?? должно быть указано 5 на показанных данных.

5. Это либо сводный вопрос (с серией условных подсчетов, как показано Акиной), либо это группа с подсчетами, где подсчеты отображаются в строках, а не в столбцах. Для обоих типов обобщения здесь уже есть несколько ответов на SO.

Ответ №1:

Попробуйте заменить последнее COUNT SUM чем-то вроде:

 SELECT
    COUNT(tbl.id) AS total,
    SUM(
        CASE `method`
            WHEN 'upi' THEN 1
        END
    ) AS upicount
FROM
    razorpayfailpayments tbl 
WHERE
    tbl.date= '2021-07-07'
    AND tbl.hour= '16'
    AND tbl.bank= '1'