好的,所以经过大量研究,我仍然很困惑。我得到了简单的基础知识:
我可以使用group by语句选择所有值的平均值。将日期在我的范围内并按我想要的平均值进行分组。
Select AVG(Qty)
From (
Select Sum(ItemQty) As Qty
From ReceivedInfo
Where DateUsed >= '2014-04-01'
AND DateUsed < '2014-04-30'
Group By Date(DateUsed)
)
这里的问题是我需要包括表格中没有的日期。所有工作日应计入没有条目的偶数天。我不确定如何获取每天(或每月或60天等)的平均数量,包括来自数据范围的所有且仅工作日。不包括周末。
要做类似的事情就足够了:
Select Sum(QTy) / (julianday('2014-04-30') - julianday('2014-04-01' )) - (((julianday('2014-04-30') - julianday('2014-04-01' )) / 7 ) * 2) As Average
From (
Select Sum(ItemQty) As Qty
From ReceivedInfo
Where DateUsed >= '2014-04-01'
AND DateUsed < '2014-04-30'
)
还是我必须确定查询之外的工作天数?
最佳答案
如果要将缺少的值视为0
,则最终查询应该可以正常工作。但是,您可以简化它。因此,非常接近:
Select Sum(QTy) / (5.0/7 * (julianday('2014-04-30') - julianday('2014-04-01' ) ) )
From ReceivedInfo
Where DateUsed >= '2014-04-01' AND DateUsed < '2014-04-30';
当然,这只是工作日数的近似值(与您建议的解决方案相似)。完整的解决方案将使用繁琐的星期几算法。
关于sql - 当不是所有天都在表中时,如何选择“每工作天/周/月/60天/90天”的平均值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23393939/