我想创建一个函数,而不是通常的查询。
我想对给定月份的所有每日数字进行求和,用几年的数据对给定月份的每个实例进行此操作。如果可以的话,我想为这些总数找到一个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)
这使我每年获得每月总计。但是,现在我需要找到特定月份的平均值并添加一个参数,以便可以指定它。但是,我很乐意为您提供这些年来每个月的平均值列表。
答案 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)