Mysql 基于dayweek SQL计算平均值

Mysql 基于dayweek SQL计算平均值,mysql,sql,mariadb,Mysql,Sql,Mariadb,我在MariaDB数据库工作。 我需要知道,每天在某个时间的平均值 我试过这样的想法 SELECT AVG(dayShipments), weekdays FROM (SELECT COUNT(idShipment) as "dayShipments", WEEKDAY(dateShipments) as "weekdays" FROM weekdays WHERE dateShipments BET

我在MariaDB数据库工作。
我需要知道,每天在某个时间的平均值
我试过这样的想法

SELECT AVG(dayShipments), weekdays
    FROM (SELECT COUNT(idShipment) as "dayShipments", WEEKDAY(dateShipments) as "weekdays"
            FROM weekdays
            WHERE dateShipments BETWEEN '2021-05-01'AND '2021-05-21'
            GROUP BY dateShipments) as t1
     GROUP BY weekdays
我的老板告诉我,这个查询忽略了我没有货的那一天。
我怎么能把它放进去?

对不起,我的英语不好,谢谢你帮助我,如果你想按一周中的哪一天进行汇总(你的查询似乎就是这样做的。如果你想将没有发货的日子视为
0
,那么请使用
SUM()
和除法:

SELECT WEEKDAY(dateShipments) as weekday,
       COUNT(*) / 3 as dayShipments as avg_per_day
FROM weekdays
WHERE dateShipments BETWEEN '2021-05-01'AND '2021-05-21'
GROUP BY weekday;

3
是因为查询跨越了三周。

首先,不要担心你的英语。它已经足够好了

其次,你的老板是对的。如果你在“weekdays”表中没有特定日期的记录,那么所提到的日期将永远不会出现在这个查询中。
为了解决这个问题,我认为您需要为一周中的某一天创建一个临时表,并将其与t1表左连接。

您的语句和查询执行不同的操作。而且,对于没有发货的日子,您希望执行什么操作?此脚本与我的问题相同。结果集应该类似于{“周一”:1.5,“周二”:4.1,…}。但是对于您的脚本(以及我的脚本),如果星期一我没有任何发货(因此计数为“0”),AVG()函数不计算“0”值。@FrancescoDellaMaggiora…如果缺少一个工作日,则将其计为缺少。如果某个工作日根本没有行,则它将不在结果集中。