一尘不染

计算每日平均值(或:某个日期范围内有多少个星期一?)

sql

我的MySQL表包含以下列:datetime,price_paid。我正在尝试计算一周中每天两次(两次约会之间)的平均销售额。这意味着我需要在startDate和endDate日期之间选择销售总和,并按工作日分组,然后将其除以该范围内每个工作日发生的次数。

我得到了第一部分:

SELECT DATE_FORMAT(datetime, '%a') AS field1, 
round(SUM(price_paid)/ THEVALUEIMLOOKINGFOR ) AS field2 
FROM Bills 
WHERE date(datetime) BETWEEN '2012-01-02' AND '2012-01-09' 
GROUP BY weekday(datetime)

我没有的是缺少的价值:我应该除以的数量-每天出现在该范围内的次数。我尝试了几种解决方案,但无济于事。

有人可以帮我完成我的SQL语句吗?

谢谢你的时间!


阅读 211

收藏
2021-03-08

共1个答案

一尘不染

也许我太简单了,但是鉴于您已经按工作日分组,难道不只是count(*)为每个工作日计算该范围内给定工作日的数量?

所以:

SELECT DATE_FORMAT(datetime, '%a') AS field1, 
round(SUM(price_paid)/ COUNT(DISTINCT(date(datetime))) ) AS field2 
FROM Bills 
WHERE date(datetime) BETWEEN '2012-01-02' AND '2012-01-09' 
GROUP BY weekday(datetime)

已编辑,因此同一天不会多次重复计数(感谢DRapp)

2021-03-08