小编典典

如何在SQL中执行百分比/总计?

sql

我有一个典型的客户/订单中设置的表,我想显示总 百分比 销售的特定客户负责。我可以像这样获得系统中的订单总数:

SELECT COUNT(order_id) FROM orders

这样我就可以得到客户发出的订单总数:

SELECT COUNT(order_id) FROM orders WHERE cust_id = 541

如何将它们组合成一个查询,以返回特定客户的销售百分比?谢谢!


阅读 155

收藏
2021-03-23

共1个答案

小编典典

MySQL:

SELECT ROUND(
  100.0 * (
      SUM(IF(cust_id = 541, 1, 0)) / COUNT(order_id)
  ), 1) AS percent_total
FROM orders;

编辑

我想如果我注意到 postgres 标签会有所帮助。我认为这是一个MySQL问题。

PostgreSQL:

SELECT ROUND(
  100.0 * (
      SUM(CASE WHEN cust_id = 541 THEN 1 ELSE 0 END) / COUNT(order_id)
  ), 1) AS percent_total
FROM orders;

PS我的PostgreSQL生锈了,所以如果MySQL查询可以在PostgreSQL上运行,我想知道:)

编辑2

我不能承受太大的压力,不能对下面的count(*)建议保持警惕。您通常希望在PostgreSQL中避免这种情况。

2021-03-23