从几年的数据中得出平均值

时间:2018-11-28 14:11:47

标签: mysql

我想创建一个函数,而不是通常的查询。

我想对给定月份的所有每日数字进行求和,用几年的数据对给定月份的每个实例进行此操作。如果可以的话,我想为这些总数找到一个AVG数字。

我发现特别棘手的一点是,我将日期存储为YYYY-MM-DD。因此,该功能需要总计给定月份的每日总笔数,并针对数据集中的每一年进行。

任何帮助都会很有帮助。

p.s。只是为了将所有相关数据(日期和数字)添加到一个名为“ PurchaseHistory”的表格中。

按要求提供样品信息:

DateOfPayment   Amount
2017-01-10      10.15
2017-01-10      10.15 
2017-01-11      10.15 
2017-01-12      20.15 
2017-01-15      10.15 
2017-01-15      10.15 
2017-01-18      20.10 
2017-01-18      20.05 
2017-02-15      15.89 
2017-02-17      10.15 
2017-02-17      15.89 
2017-02-17      10.15 

依此类推,但是要追溯到2016年的每个月。

到目前为止,我有:

SELECT YEAR(DateOfPayment), MONTH(DateOfPayment), SUM(Amount)
FROM DateOfPayment
GROUP BY YEAR(DateOfPayment), MONTH(DateOfPayment)

这使我每年获得每月总计。但是,现在我需要找到特定月份的平均值并添加一个参数,以便可以指定它。但是,我很乐意为您提供这些年来每个月的平均值列表。

1 个答案:

答案 0 :(得分:0)

如果我确实理解,您需要的是将每天的金额相加,然后获得每个月的平均值,因此您可以在内部查询中获取每日总计,然后在外部查询中获取每月平均值:< / p>

SELECT YEAR(b.DateOfPayment),MONTH(b.DateOfPayment),AVG(b.TotalDay)
FROM
    (SELECT a.DateOfPayment, SUM(a.Amount) as TotalDay
    FROM DateOfPayment a
    GROUP BY a.DateOfPayment) 
GROUP BY YEAR(b.DateOfPayment),MONTH(b.DateOfPayment)

编辑

修复错误:

SELECT YEAR(b.DateOfPayment),MONTH(b.DateOfPayment),AVG(b.TotalDay)
FROM
    (SELECT a.DateOfPayment, SUM(a.Amount) as TotalDay
    FROM DateOfPayment a
    GROUP BY a.DateOfPayment) b
GROUP BY YEAR(b.DateOfPayment),MONTH(b.DateOfPayment)