php – MySQL AVG(COUNT(*) – 订单按星期几查询?

这个问题令我困惑……我已经搜索了一天的网络工作,我尝试过很多东西.

我希望从我的数据库获得每周每天的平均订单数量.我可以用COUNT来计算总数#就好了.但我无法弄清楚如何在GROUP BY上获得COUNT的AVG.我已经尝试了子查询……功能……一切……没有用……也许有人可以给我一个骨头.

这是我在下面开始的查询.我知道AVG(COUNT(*))不起作用,但我会留下它,因为它显示了我想做的事情.

SELECT 
    AVG(COUNT(*)) AS avgorders,SUM(total) AS ordertotal,DAYNAME(STR_TO_DATE(order_time,'%m/%d/%Y %H:%i')) AS day 
FROM data 
GROUP BY day 
ORDER BY DAYOFWEEK(STR_TO_DATE(order_time,'%m/%d/%Y %H:%i')) ASC

最佳答案
要获得平均值,您不需要每天的总计,您需要每天多个每日总计.

  Day    |  Count
__________________
 Monday        5
 Tuesday       4
 Monday        6
 Tuesday       3
 ...          ...

然后你可以平均这些数字.星期一I.e(5 6)/ 2.
这样的事情应该有效:

SELECT day_of_week,AVG(order_count) average_order FROM 
(
  SELECT DAYNAME(order_date) day_of_week,DAYOFWEEK(order_date) day_num,TO_DAYS(order_date) date,count(*) order_count
  FROM data 
  GROUP BY date
) temp
GROUP BY day_of_week 
ORDER BY day_num

更新:我本来是错的.将内部SELECT按实际日期分组以获得正确的每日总计.例如,您需要分别在星期一(2/1/10)和星期一(2/8/10)获得多少订单.然后将这些总数按星期几计算.

相关文章

发表回复

您的电子邮箱地址不会被公开。