MySQL-在选择中获取每个月的平均值

标签 mysql

我有一个演示表,其中包含日期列表、玩具类型、玩具年龄组和销售数据。我想获取按月排序的销售列表,但每个月的平均值:

Table
Date | Type | Age | Sales
2014-01-04 | Blocks | 3+ | 1000
2014-01-12 | Blocks | 3+ | 2000
2014-01-23 | Blocks | 3+ | 1500
2014-02-04 | Blocks | 3+ | 1000
2014-02-12 | Blocks | 3+ | 3500
2014-02-23 | Blocks | 3+ | 700
2014-03-04 | Blocks | 3+ | 1100
2014-04-12 | Blocks | 3+ | 2100
2014-04-23 | Blocks | 3+ | 1200

考虑更大规模,即数千条记录,下面的查询看起来正确还是有更好的方法?

SELECT YEAR(Date) AS MyYear,MONTH(Date) AS MyMonth,AVG(Sales) AS MyValue
FROM SalesTable
WHERE Type LIKE 'Blocks%' AND Age='3+'
GROUP BY MyYear, MyMonth;

最佳答案

避免使用不必要的 LIKE。在您的示例中不需要 LIKE。当数据增长时,这可能会影响您的性能。

Type LIKE 'Blocks%' 

此外,您可能需要考虑对“类型”和“年龄”列建立索引。

关于MySQL-在选择中获取每个月的平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22210806/

相关文章:

mysql - 将不同表中的两列插入到一个表中

mysql - SQL无效使用组函数

mysql - 如何传递逗号分隔的输入参数以从另一个存储过程调用存储过程

使用 SUM() 的 MySQL 查询未返回预期结果

php - MySql 查询省略了最后记录的行

php - 如果多个记录在一个 ID 上,如何获取单个记录?

php - 如何使用 PDO 跨两个数据库运行查询

mysql - Left Join 基于字段值

php - php中的一个递增函数出错

mysql - 仅当 MySQL 中尚不存在时插入行