在 MySQL 中计算每天的平均销售额

Posted

技术标签:

【中文标题】在 MySQL 中计算每天的平均销售额【英文标题】:Compute average sales per day in MySQL 【发布时间】:2016-03-26 22:45:45 【问题描述】:

在我的数据库中,我有一个包含两列的表。第一列包含日期,第二列是计数变量。我想知道是否可以根据日期和计数计算每个工作日的平均计数。 下面是一个小例子:

表:

Date         Count
02/01/2005     100
02/02/2005     200
02/03/2005     300
...            ...

输出:

 Days       Average
 Monday       120.5         
 Tuesday      200.2                   
 Wednesday    300.5 

【问题讨论】:

首先您需要按DAYNAME 分组,然后尝试使用MAXGROUP BY 将行转换为列。您可以通过两个不同的步骤搜索它。 【参考方案1】:

@Mureinik 的回答也以数据集为中心。如果您需要将工作日作为行而不是列(我不确定您的问题),查询会变得更加容易(未经测试):

SELECT DAYNAME(`date`) AS day_of_week,
       AVG(`count`) AS average
FROM yourtable
GROUP BY DAYOFWEEK(`date`)
ORDER BY DAYOFWEEK(`date`)

【讨论】:

【参考方案2】:

您可以对case 表达式进行一系列avg 调用以提取当天的名称:

SELECT AVG(CASE DAYOFWEEK(`date`) WHEN 2 THEN `count` ELSE NULL END) AS Monday,
       AVG(CASE DAYOFWEEK(`date`) WHEN 3 THEN `count` ELSE NULL END) AS Tuesday,
       AVG(CASE DAYOFWEEK(`date`) WHEN 4 THEN `count` ELSE NULL END) AS Wednesday,
       AVG(CASE DAYOFWEEK(`date`) WHEN 5 THEN `count` ELSE NULL END) AS Thursday,
       AVG(CASE DAYOFWEEK(`date`) WHEN 6 THEN `count` ELSE NULL END) AS Friday
FROM   mytable

编辑: 鉴于已编辑帖子中更新的预期输出,它更容易做到 - 只需按 dayname 分组:

SELECT   DAYNAME(`date`), AVG(`count`)
FROM     mytable
WHERE    DAYOFWEEK(`date`) BETWEEN 2 AND 6
GROUP BY DAYNAME(`date`)

【讨论】:

嗨,这给了我语法错误。对不起,我刚刚认识到我需要以不同的方式输出......我编辑了我的问题。我尝试了从表 Group by Dayofweek(Date) 中选择 Dayofweek(Date)、AVG(Count) 的方法。但是它没有给我正确的答案。感谢您的回复! @Peanut 是的,我忘记了end 那里,然后只是复制粘贴错误五次,我很抱歉。鉴于您对该问题的最新更新,这样做会容易得多 - 有关详细信息,请参阅我编辑的答案。

以上是关于在 MySQL 中计算每天的平均销售额的主要内容,如果未能解决你的问题,请参考以下文章

您如何使用 MDX 计算 MTD/YTD 平均工作日销售额?

MySQL for Rails 在特定日期范围内每天获得 AVERAGE 的最佳方法

每天的平均销售价格

商店销售某一件商品,每天公布统一的折扣(discount)。同时允许销售人员在销售时灵活掌握售价(price),在此

PowerBI DAX计算:按月的移动平均线组计算

计算每天的销售额[时间戳]