mysql - 使用 CASE 时指定 SUM 列

标签 mysql sql sum case

我基本上是在尝试总结特定列的值。现在我的查询如下所示:

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/

相关文章:

mysql - 通过 MySQL 存储过程和函数更新 180k 行太慢 - 如何加快速度

c# - Entity Framework 6 代码优先触发器

mysql - 每隔两行更新一次时间值

javascript - jQuery - 对表单中的每个输入值求和

SQL:如何对两个表进行分组?

mysql - 如何禁止自动递增 ID 在重复 key 更新时进行更新?

php - 我如何将 session 电子邮件发送给 php?

mysql - 如何使用 SQL 的表父子关系仅选择一代层次树?

sql - 将同一表中的一列的值更新到 SQL Server 中的另一列

javascript - 数组对象上字符串值的总和