갑자기 증가할 때의 증가분을 적당히 미리 정해주지 않으면 어려울겁니다. 예를 들어 갑자기 값이 100 이상 커지면 그 이후의 모든 값에 대한 평균을 구한다고 하지요.
CREATE
tmp_tbl
AS
SELECT
t1.idx AS idx, t1.data - t2.data AS jump, t2.data AS data
FROM
(SELECT * FROM tbl HAVING idx != COUNT(*) SORT BY idx) t1,
(SELECT * FROM tbl WHERE idx > 1 SORT BY idx) t2
SELECT AVERAGE(data) FROM tmp_tbl WHERE idx >= (SELECT MIN(idx) FROM tmp_tbl WHERE jump > 100)
테스트 안해봤습니다. 오랜만에 써보는 sql 이라 문법 자체가 틀렸을 수도 있습니다. 그냥 아이디어만 보시면 될 듯 합니다.
사실 sql에는 별로 어울리지 않는 작업 같습니다. sql은 정말 set에 대한 query에나 어울리는 언어이지, 데이터를 list로 보고 작업하는 이런 일이나 데이터 분석에는 어울리지 않는 것 같습니다.
다른 언어로 작성하실 수 있다면 그 편이 훨씬 나을 겁니다.
단순히 값이 1000 이상인 레코드들을 모아서 평균을
단순히 값이 1000 이상인 레코드들을 모아서 평균을 내면 안되는 것인가요?
풀어야할 문제를 조금 더 분명히 알려주시면 좋을 것 같습니다.
특정 기준이 되는 값은 없습니다.
수집되는 데이터가 0과 2 사이의 값에서 시작해서 어느 시점에 200 등의 값으로 증가한뒤에 수집되는 데이터를 가지고 평균을 구해야 합니다.
idx data
1 0
2 1
3 2
4 1
5 0
6 1
7 200
8 201
9 203
10 204
11 200
12 80
13 70
14 0
15 100
16 299
17 300
18 350
19 200
20 201
21 203
22 206
....
위와 같이 어느 시점에서 수치가 증가한 이후부터 모든 데이터에 대한 평균을 구해야 합니다.
즉 idx 7부터 22까지의 평균을 구해야 하는 것이죠. (idx는 구분, 설명하기위해서 표시한 것입니다.)
갑자기 증가할 때의 증가분을 적당히 미리 정해주지
갑자기 증가할 때의 증가분을 적당히 미리 정해주지 않으면 어려울겁니다. 예를 들어 갑자기 값이 100 이상 커지면 그 이후의 모든 값에 대한 평균을 구한다고 하지요.
테스트 안해봤습니다. 오랜만에 써보는 sql 이라 문법 자체가 틀렸을 수도 있습니다. 그냥 아이디어만 보시면 될 듯 합니다.
사실 sql에는 별로 어울리지 않는 작업 같습니다. sql은 정말 set에 대한 query에나 어울리는 언어이지, 데이터를 list로 보고 작업하는 이런 일이나 데이터 분석에는 어울리지 않는 것 같습니다.
다른 언어로 작성하실 수 있다면 그 편이 훨씬 나을 겁니다.
댓글 달기