我想获得average
的计算sum
。我从this stackoverflow answer尝试过的语法所以我的SQL查询如下所示:SUM的SQL AVG
SELECT AVG(iq.stockvalue_sum), iq.date
FROM(
SELECT CONCAT(DATE_FORMAT(s.date, '%Y'), '-01-01') as date,
SUM(GREATEST(s.stockvalue,0)) as stockvalue_sum
FROM stockvalues s
GROUP BY CONCAT(DATE_FORMAT(s.date, '%Y'), '-01-01')
) iq
然而,这是不是给我一个正确的平均值。我想要得到每年平均stockvalue
。该表背后的想法是每天保存每种产品的库存和库存价值。因此,此特定查询将显示其数据每年的平均股价。
编辑:样本输出数据
Stockvalue | Year
_________________
- 205 | 2015
- 300 | 2014
输入数据:
pid | val | date
______________________
- 1 | 100 | 28-04-2015
- 2 | 150 | 28-04-2015
- 1 | 80 | 27-04-2015
- 2 | 80 | 27-04-2015
....
- 1 | 100 | 29-01-2014
- 2 | 100 | 29-01-2014
- 1 | 200 | 30-01-2014
- 2 | 200 | 30-01-2014
所以我需要计算知道total
stockvalue的平均值。因此,对于X日所有stockvalues之和X
你的外部查询是由缺少一组,但由于逻辑分组列('iq.date')与内部查询相同,没有多大意义,即你的内部查询每年只返回一个结果,所以取这一行的平均值是毫无意义的。因此,我对你的要求有点困惑,或许一些样品数据和预期产量会有所帮助? – GarethD
@GarethD我添加了一些样本数据 – Bram
没有样本输入,样本输出没有帮助。我的观点是,我不明白为什么你需要'SUM',你能不能直接做一个平均值,所以把SUM(GREATEST(s.stockvalue,0))改为'AVG(GREATEST(s) .stockvalue,0))',并完全摆脱外部查询。 – GarethD