我有一张桌子像
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发布于 2018-10-25 07:06:17
我们可以在这里使用解析函数:
SELECT
ID, REFGROUP, YEAR, MONTH,
AVG(VALUE) OVER (PARTITION BY REFGROUP, YEAR ORDER BY MONTH) AVG_VALUE
FROM yourTable
ORDER BY
REFGROUP, YEAR, MONTH;

https://stackoverflow.com/questions/52983176
复制相似问题