오라클을 사용하구요. 3일의 표준편차를 구하려고합니다.
다만 당일의 값은 원래의 값을 사용하지 않고 다른 테이블에서 조인한 대체 값으로 써서 구하고싶습니다.
출력을 이런식으로 한다면
seq | value | replace | stddev |
1 | 2000 | 10 | null |
2 | 400 | 10 | null |
3 | 3000 | 10 | 1054.53 |
4 | 20 | 10 | 1625.433 |
5 | 4000 | 10 | 1723.398 |
3 행의 값은 아래와 같이 노란색의 값이 범위가 되는 것이지요.
seq | value | replace | stddev |
1 | 2000 | 10 | null |
2 | 400 | 10 | null |
3 | 3000 | 10 | 1054.53 |
4 | 20 | 10 | 1625.433 |
5 | 4000 | 10 | 1723.398 |
4행의 값은 아래와 같구요
seq | value | replace | stddev |
1 | 2000 | 10 | null |
2 | 400 | 10 | null |
3 | 3000 | 10 | 1054.53 |
4 | 20 | 10 | 1625.433 |
5 | 4000 | 10 | 1723.398 |
고수님들 알려주세요 ㅜㅜ
WITH t AS ( SELECT 1 seq, 2000 val, 10 rep FROM dual UNION ALL SELECT 2, 400, 10 FROM dual UNION ALL SELECT 3, 3000, 10 FROM dual UNION ALL SELECT 4, 20, 10 FROM dual UNION ALL SELECT 5, 4000, 10 FROM dual ) SELECT seq, val, rep , ROUND(DECODE(COUNT(*), 3, STDDEV(v)), 3) x FROM (SELECT seq, val, rep , LAG(val, 2) OVER(ORDER BY seq) v1 , LAG(val, 1) OVER(ORDER BY seq) v2 , rep v3 FROM t ) UNPIVOT (v FOR gb IN (v1, v2, v3)) GROUP BY seq, val, rep ORDER BY seq ;