我有一组典型的客户/订单表,我想显示一个特定客户负责的总销售额.我可以这样获得系统中的订单总数:
SELECT COUNT(order_id) FROM orders
我可以得到客户的订单总数,如下所示:
SELECT COUNT(order_id) FROM orders WHERE cust_id = 541
如何将这些信息组合成一个查询,返回特定客户的销售额百分比?谢谢
我有一组典型的客户/订单表,我想显示一个特定客户负责的总销售额.我可以这样获得系统中的订单总数:
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;
Edit
我想如果我注意到postgres号标签会有所帮助.我以为这是个问题.
PostgreSQL:
SELECT ROUND(
100.0 * (
SUM(CASE WHEN cust_id = 541 THEN 1 ELSE 0 END)::numeric / COUNT(order_id)
), 1) AS percent_total
FROM orders;
另外,我的PostgreSQL已经Rust 了,所以如果MySQL查询可以在PostgreSQL上运行,我想知道:)
Edit 2
我再怎么强调也不足以提防下面的count(*)建议.您通常希望通过PostgreSQL避免这种情况.