Я хочу получить average
расчетного sum
. Я попытался синтаксис из this stackoverflow answer Так что мой SQL-запрос выглядит следующим образом:SQL AVG SUM
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
за каждый год. Идея, лежащая в основе таблицы, состоит в том, чтобы каждый день сохранять запас и запас для каждого продукта. Таким образом, этот speciq-запрос должен показывать среднее значение запаса за каждый год, в котором он имеет данные.
Edit: выходных данных Sample
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. Таким образом, сумма всех stockvalues за день X и среднее значение X
Ваш внешний запрос отсутствует группу по, но так как столбец логической группировки ('iq.date') совпадает с внутренним запросом, это не имеет особого смысла, т. е. ваш внутренний запрос будет возвращать только один результат в год, поэтому, взяв среднее значение этой одной строки, бессмысленно , Поэтому я немного запутался в отношении ваших требований, возможно, некоторые примеры данных и ожидаемый результат помогут? – GarethD
@GarethD Я добавил некоторые примеры данных – Bram
Этот образец вывода не помогает без ввода образца. Мое мнение состояло в том, что я не понимаю, зачем вам нужен «СУМ» вообще, не можете ли вы просто сделать среднее значение напрямую, поэтому измените SUM (GREATEST (s.stockvalue, 0)) 'на' AVG (GREATEST (s) .stockvalue, 0)) 'и полностью избавиться от внешнего запроса. – GarethD