我基本上是在尝试总结特定列的值。现在我的查询如下所示:
SELECT
DATE(paid_at) AS day,
(SELECT sum(shipping_costs) from orders where shipping_method = 'mondial_relais' and DATE(paid_at) = day) as mr_revenue_real
FROM orders
WHERE MONTH(paid_at) = 10
AND YEAR(paid_at) = 2011
GROUP BY day;
我想替换 mr_revenue_real
的子查询以提高性能,但我不知道该怎么做。这就是我的想法:
sum(case when hipping_method = 'mondial_relais' and DATE(paid_at) = day then 1 end) as mr_revenue_real
但这不起作用,因为我没有在任何需要运费总和的地方指定.
有什么想法吗?
最佳答案
sum(case when shipping_method='mondial_relais' then shipping_costs else 0 end)
完整查询:
SELECT
DATE(paid_at) AS day,
sum(case when shipping_method='mondial_relais' then shipping_costs else 0 end)
FROM orders
WHERE MONTH(paid_at) = 10 AND YEAR(paid_at) = 2011
GROUP BY day;
关于mysql - 使用 CASE 时指定 SUM 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8326664/