我想查询订单表并显示客户 ID 和他所有订单的总数,但是订单总数可以是正数或负数。
select customer_id, SUM(order_total) from orders group by customer_id;
现在我的问题 - 如何在一个 sql 查询中实现以下内容:
如果总和为正,我想原样显示;如果总和为负数,我只想显示 0 而不是实际金额。
我正在寻找的是一个可以处理这个问题的函数,类似于 IFNULL
函数 (IFNULL(SUM(order_total),0)
),但不是检查 null,它应该检查否定结果。
伪代码:
IFNEGATIVE(SUM(order_total),0)
有没有标准sql中的简单方法(或者专门在Mysql 5.5中,也可以)。
最佳答案
SELECT customer_id,
CASE
WHEN SUM(order_total) < 0 THEN 0
ELSE SUM(order_total)
END
FROM orders
GROUP BY customer_id;
检查您的执行计划,但 2 个 SUM
可能会在后台优化为单个 SUM
。
关于mysql - SUM 的 SQL 聚合查询,但只允许正和(否则为 0),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6581796/