#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'