У меня есть одна таблица, например
ID REFGROUP YEAR MONTH VALUE
--- ----- ------ ----- -----
1 1000 2018 1 10
2 1000 2018 2 8
3 1000 2018 3 12
4 2000 2018 1 6
5 2000 2018 2 8
6 2000 2018 3 1
Я хочу получать средний месяц за месяцем по группе и году
ID REFGROUP YEAR MONTH VALUE
--- ----- ------ ----- -----
1 1000 2018 1 10
2 1000 2018 2 9
3 1000 2018 3 10
4 2000 2018 1 6
5 2000 2018 2 7
6 2000 2018 3 5
Результат будет выше.За второй месяц получите среднее значение за первые два месяца.В течение третьего месяца Iw будет получать среднюю из первой трехмесячной группы по группам и годам.
Я пробовал объединение для каждого месяца, но.Это делает медленную производительность.Я сделаю оба 12 месяца для каждого года так.Как можно написать SQL-запрос, чтобы сделать быстрее, чем я написал.Мой занимает 8 минут, что слишком много
select 1 AS AMONTHH, REFGROUP,AYEAR, AVG(TOTAL) from BMS.FNC_W_PAYROL WHERE AMONTH<=1 GROUP BY REFGROUP,AYEAR
UNION
select 2 AS AMONTHH, REFGROUP,AYEAR, AVG(TOTAL) from BMS.FNC_W_PAYROL WHERE AMONTH<=2 GROUP BY REFGROUP,AYEAR
UNION
select 3 AS AMONTHH, REFGROUP,AYEAR, AVG(TOTAL) from BMS.FNC_W_PAYROL WHERE AMONTH<=3 GROUP BY REFGROUP,AYEAR
UNION
select 4 AS AMONTHH, REFGROUP,AYEAR, AVG(TOTAL) from BMS.FNC_W_PAYROL WHERE AMONTH<=4 GROUP BY REFGROUP,AYEAR
UNION
select 5 AS AMONTHH, REFGROUP,AYEAR, AVG(TOTAL) from BMS.FNC_W_PAYROL WHERE AMONTH<=5 GROUP BY REFGROUP,AYEAR
UNION
select 6 AS AMONTHH, REFGROUP,AYEAR, AVG(TOTAL) from BMS.FNC_W_PAYROL WHERE AMONTH<=6 GROUP BY REFGROUP,AYEAR
UNION
select 7 AS AMONTHH, REFGROUP,AYEAR, AVG(TOTAL) from BMS.FNC_W_PAYROL WHERE AMONTH<=7 GROUP BY REFGROUP,AYEAR
UNION
select 8 AS AMONTHH, REFGROUP,AYEAR, AVG(TOTAL) from BMS.FNC_W_PAYROL WHERE AMONTH<=8 GROUP BY REFGROUP,AYEAR
UNION
select 9 AS AMONTHH, REFGROUP,AYEAR, AVG(TOTAL) from BMS.FNC_W_PAYROL WHERE AMONTH<=9 GROUP BY REFGROUP,AYEAR
UNION
select 10 AS AMONTHH, REFGROUP,AYEAR, AVG(TOTAL) from BMS.FNC_W_PAYROL WHERE AMONTH<=10 GROUP BY REFGROUP,AYEAR
UNION
select 11 AS AMONTHH, REFGROUP,AYEAR, AVG(TOTAL) from BMS.FNC_W_PAYROL WHERE AMONTH<=11 GROUP BY REFGROUP,AYEAR
UNION
select 12 AS AMONTHH, REFGROUP,AYEAR, AVG(TOTAL) from BMS.FNC_W_PAYROL WHERE AMONTH<=12 GROUP BY REFGROUP,AYEAR