MySQL SUM 如果大于和小于

Posted

技术标签:

【中文标题】MySQL SUM 如果大于和小于【英文标题】:MySQL SUM If More Than & Less Than 【发布时间】:2016-05-11 05:52:01 【问题描述】:

如果它们的值超过 200,我需要从 price 列中求和。

否则,如果它们的值小于 200,我需要求和。

我想按日期对它们进行分组的结果。

请查看订单表:

price       date_transaction
537         2014-03-28 11:44:40
123         2014-03-28 14:35:21
96          2014-03-28 15:43:17
341         2014-03-28 16:12:42
309         2014-03-29 15:47:48
223         2014-03-29 19:22:28
115         2014-03-29 23:31:34
109         2014-03-29 23:44:16

我想得到如下结果:

date_transaction    sum_of_two_hundred_or_more      sum_of_less_than_200
2014-03-28          878                             219
2014-03-29          532                             224
2014-03-30          0                               0
2014-03-31          0                               0

这是我尝试过的,但它只显示超过 200 个。

SELECT
DISTINCT DATE(date_transaction) AS date_transaction,
SUM(price) AS sum_of_two_hundred_or_more
FROM orders
WHERE price > 200
AND date_transaction BETWEEN '2014-03-26' AND '2014-03-31' + INTERVAL 1 DAY
GROUP BY DATE(date_transaction)
ORDER BY DATE(date_transaction) ASC;

【问题讨论】:

我的回答解决了你的问题吗? 是的,工作成功。谢谢! 太棒了。不客气。 【参考方案1】:

这应该可行:

SELECT DATE(date_transaction) AS date_transaction,
    SUM (CASE WHEN price >= 200 THEN price ELSE 0 END) AS sum_of_two_hundred_or_more
    SUM (CASE WHEN price < 200 THEN price ELSE 0 END) AS sum_of_two_hundred_less
FROM orders
WHERE date_transaction BETWEEN '2014-03-26' AND '2014-03-31' + INTERVAL 1 DAY
GROUP BY DATE(date_transaction)
ORDER BY DATE(date_transaction) ASC

【讨论】:

以上是关于MySQL SUM 如果大于和小于的主要内容,如果未能解决你的问题,请参考以下文章

matlab如何统计矩阵中大于或小于某数的元素个数?

Mysql中varchar(1024),如果大于1024我就要截取,是这样吗:if(result.length()>1024)?还是其他的办法?

GroupBy 和 Sum,如果大于零标记行 True

在 ASP.NET 中,如果文本在“大于”和“小于”符号之间给出,则无法保存文本框

在 ASP.NET 中,如果文本在“大于”和“小于”符号之间给出,则无法保存文本框

P3853 [TJOI2007]路标设置