我有一套典型的CUSTOMER/ORDERS表格,我想显示特定客户负责的销售总百分比.我可以像这样获得系统中的订单总数:
SELECT COUNT(order_id) FROM orders
Run Code Online (Sandbox Code Playgroud)
我可以得到客户订单的总数,如下所示:
SELECT COUNT(order_id) FROM orders WHERE cust_id = 541
Run Code Online (Sandbox Code Playgroud)
如何将这些组合成一个返回特定客户销售百分比的查询?谢谢!
hob*_*ave 37
MySQL的:
SELECT ROUND(
100.0 * (
SUM(IF(cust_id = 541, 1, 0)) / COUNT(order_id)
), 1) AS percent_total
FROM orders;
Run Code Online (Sandbox Code Playgroud)
编辑
我想如果我注意到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;
Run Code Online (Sandbox Code Playgroud)
PS我的PostgreSQL生锈了,所以如果MySQL查询适用于PostgreSQL我想知道:)
编辑2
我不能强调要警惕下面的计数(*)建议.你通常希望用PostgreSQL来避免这种情况.
Rob*_*ott 10
一种解决方案是使用嵌套查询 -
SELECT count(*) / (SELECT count(*) FROM orders)
FROM orders
WHERE cust_id = 541
Run Code Online (Sandbox Code Playgroud)