MySQL使用分组方式计算计数,总和和百分比

时间:2019-04-10 13:48:50

标签: mysql group-by count sum

我有一个包含以下字段的付款表:

  • id(int)
  • 状态(成功,失败,已退款)
  • 金额(int)
  • 日期(Y-m-d格式)

我需要编写一个查询,以获取每天成功完成多少笔付款,失败完成多少笔以及退款多少笔以及当天的百分比。我当前的查询是这样:

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%和{{1 }} = refunded

我如何使其返回此值:

25%

如您所见,该百分比是根据每天的总付款次数计算得出的。

谢谢!

1 个答案:

答案 0 :(得分:1)

您可以在select语句中使用子查询来完成此操作。请在下面参考:

 INFO  [main][ModuleFrameworkImpl:1636] Starting dynamic bundles
 ERROR [Start Level: Equinox Container: 08ae8322-2575-4260-9c68-db4761a17500][org_apache_felix_scr:97] bundle org.apache.felix.scr:2.1.14 (34)Error while loading components of bundle com.liferay.portal.remote.soap.extender.impl:2.0.5 (555) 
java.lang.ClassCastException: org.eclipse.osgi.internal.loader.FragmentLoader cannot be cast to org.eclipse.osgi.internal.loader.BundleLoader

这将为您提供所需的东西。查看以下运行示例: https://www.db-fiddle.com/f/e6a6CJb3pqLzcRz18SGeZ2/1