У меня есть таблица платежей со следующими полями:
- id (int)
- статус (успешно, не удалось, возвращается)
- сумма (int)
- pdate (в формате Ymd)
Мне нужно написать запрос, чтобы получить за каждый день, сколько платежей было успешным, сколько было неудачных и сколько было возвращено, с процентомна этот день.Мой текущий запрос такой:
select pdate, status, count(*) as total, sum(amount) as total_amount
from payments
group by pdate, status
Запрос успешно возвращает количество обработанных платежей за каждый день и статус:
pdate status total total_amount
2019-04-01, successful, 10, 100
2019-04-01, failed, 5, 50
2019-04-01, refunded, 5, 50
2019-04-02, successful, 12, 120
2019-04-02, failed, 5, 50
2019-04-02, refunded, 3, 30
Но я не знаю, как это сделатьрассчитать процент за каждый платеж за каждый деньНапример, для 2019-04-01
было 20
платежей, поэтому процент successful
платежей = 50%
, failed
= 25%
и refunded
= 25%
.
КакМогу ли я заставить его вернуть это:
pdate status total total_amount percentage
2019-04-01, successful, 10, 100, 50%
2019-04-01, failed, 5, 50, 25%
2019-04-01, refunded, 5, 50, 25%
2019-04-02, successful, 12, 120, 58.3%
2019-04-02, failed, 5, 50, 16.6%
2019-04-02, refunded, 3, 30, 25%
Как видите, процент рассчитывается на основе общего количества платежей за каждый день.
Заранее спасибо!