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

Tra*_*Guy 3 mysql sql datetime

我的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)
Run Code Online (Sandbox Code Playgroud)

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

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

谢谢你的时间!

mso*_*ona 8

也许我太简单了,但考虑到你已经在工作日进行分组,不会只计算(*)在每个工作日计算该范围内给定工作日的数量?

所以:

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)
Run Code Online (Sandbox Code Playgroud)

编辑所以不要在同一天多次超额计算(感谢DRapp)

  • 我认为你非常接近......但是,如果他们在同一天有多张账单,你就会超过除数.格式化的yyyy-mm-dd上的COUNT(DISTINCT)将有助于确保...... (4认同)