微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

SETUP 具有多个日期范围的多个总和

如何解决SETUP 具有多个日期范围的多个总和

这是我要完成的查询

SELECT salesrep,SUM(lines_total) AS OTSUM,SUM(order_type = 'NEW') OTNEW,SUM(order_type = 'REPEAT') OTREPEAT,SUM(lines_total 
      WHERE order_closed BETWEEN '2020-11-01' AND '2020-11-30') AS OTLMSUM
    SUM(lines_total 
      WHERE order_closed BETWEEN '2020-12-01' AND '2020-12-31') AS ottMSUM
FROM `ranger_orders`
WHERE order_closed BETWEEN '2020-01-01' AND '2020-12-31'

当然这会失败,但是我如何为多个日期范围设置 SUMS,最后的 WHERE 日期范围需要保持原样。

对于这些行:

SUM(lines_total WHERE order_closed BETWEEN '2020-11-01' AND '2020-11-30') AS OTLMSUM
SUM(lines_total WHERE order_closed BETWEEN '2020-12-01' AND '2020-12-31') AS ottMSUM

解决方法

您需要 CASE 表达式进行条件聚合,例如:

SUM(CASE WHEN order_closed BETWEEN '2020-12-01' AND '2020-12-31' THEN lines_total ELSE 0 END) AS OTTMSUM

对于每个总和,相应地更改 BETWEEN '2020-12-01' AND '2020-12-31'

,

为了保持销售代表在行上对齐数据,您仍然需要添加所有数字 - 但您可以用零替换超出范围的数字....

SUM(IF (order_closed BETWEEN '2020-11-01' AND '2020-11-30',lines_total,0)) AS OTLMSUM

您指出您收到语法错误,但这看起来像是语义错误:

SUM(order_type = 'NEW') OTNEW

你真的想把这些加起来吗?数他们?对它们进行分类?

查询可能类似于...

SELECT salesrep,SUM(lines_total) AS OTSUM,SUM(IF(order_type = 'NEW',1,0)) OTNEW,SUM(IF(order_type = 'REPEAT',0)) OTREPEAT,SUM(IF (order_closed BETWEEN '2020-11-01' AND '2020-11-30',0)) AS OTLMSUM
    SUM(if(order_closed BETWEEN '2020-12-01' AND '2020-12-31',0)) AS OTTMSUM
FROM `ranger_orders`
WHERE order_closed BETWEEN '2020-01-01' AND '2020-12-31'

此外,对于聚合查询(SUM、AVERAGE、COUNT...),您应该有一个 GROUP BY 子句....

GROUP BY salesrep 

但是这样做会不会更简单....

SELECT salesrep,0)) AS OTNEW,0)) AS OTREPEAT,DATE_FORMAT(order_closed,'%Y-%m') AS month,SUM(lines_total) AS otsum
FROM `ranger_orders`
WHERE order_closed BETWEEN '2020-01-01' AND '2020-12-31'
GROUP BY salesrep,'%Y-%m')

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?