Mysql 如何获得月平均有效订单

Mysql 如何获得月平均有效订单,mysql,Mysql,我有订单表,其中有开始日期、结束日期和预期结束日期列,我可以在一个月内获得所有活动工单,但我要寻找选定的月平均工单 我正试图找到一个想法,但无法得到,有人能帮我吗 我们可以将这3个查询合并为单个查询1+Query2-Query3=所需的计数,在本例中为7 根据评论更新: 平均工作意味着在数据库中有数以千计的订单,一些可能在月中旬关闭,一些可能在月初开始,一些可能在下个月开始。所以我想知道这个月平均有多少订单在工作 预期结果或计数为:7,因为该月有4个订单关闭,4个订单开始 MySQL 5.6架构

我有订单表,其中有开始日期、结束日期和预期结束日期列,我可以在一个月内获得所有活动工单,但我要寻找选定的月平均工单

我正试图找到一个想法,但无法得到,有人能帮我吗

我们可以将这3个查询合并为单个查询1+Query2-Query3=所需的计数,在本例中为7

根据评论更新: 平均工作意味着在数据库中有数以千计的订单,一些可能在月中旬关闭,一些可能在月初开始,一些可能在下个月开始。所以我想知道这个月平均有多少订单在工作

预期结果或计数为:7,因为该月有4个订单关闭,4个订单开始

MySQL 5.6架构设置:

问题1:


我假设,如果结束日期标记为空,则该订单为活动订单,否则该订单为非活动订单。 因此,1月份的所有有效订单的结束日期为空,开始日期为2020年1月31日或之前。 基于以上2个假设,生成的查询如下所示:

选择订单号、开始日期、结束日期、截止日期 从命令 其中结束日期为空
对于第一个查询,我发现它更容易阅读

SELECT order_num, start_date, anticpated_end_date, end_date 
  FROM orders 
 WHERE start_date < '2020-01-01'
   AND COALESCE(end_date,anticpated_end_date) > '2020-01-31';
如果你只对这个结果感兴趣,那么考虑下面……/P>
SELECT SUM(start_date < '2020-01-01' AND COALESCE(end_date,anticpated_end_date) > '2020-01-31')n 
  FROM orders;

这有帮助吗?

请您的问题提供样本数据和预期结果,以便其他人更好地理解您的需求。此外,您可能需要提供2条以上的记录,以便您的数据集能够代表您的用例。工单是否在给定的月份内结束或预计结束?@GMB Thank将更新shortly@Strawberry给我更多的时间,我正在努力添加更多的记录,期望的结果是什么?相应地编辑您的问题。您是否建议类似于此?@wr02不是那样,而是类似于那样-没有那些毫无意义的datesOk,我将交叉检查它。谢谢您的帮助,预防日期>='2020-01-01'和预防日期>=2020-01-31或预防日期2020-01-01和2020-01-31之间的区别是什么?它们都是相同的,最初我是出于不同的原因写的,最终改变了它,后来我忽略了
SELECT order_num, start_date, anticpated_end_date, end_date 
  FROM orders 
 WHERE start_date < '2020-01-01'
   AND COALESCE(end_date,anticpated_end_date) > '2020-01-31';
SELECT SUM(start_date < '2020-01-01' AND COALESCE(end_date,anticpated_end_date) > '2020-01-31')n 
  FROM orders;