在 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
分组,然后尝试使用MAX
和GROUP 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 的最佳方法