我有一个典型的客户/订单中设置的表,我想显示总 百分比 销售的特定客户负责。我可以像这样获得系统中的订单总数:
SELECT COUNT(order_id) FROM orders
这样我就可以得到客户发出的订单总数:
SELECT COUNT(order_id) FROM orders WHERE cust_id = 541
如何将它们组合成一个查询,以返回特定客户的销售百分比?谢谢!
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中避免这种情况。