[SQL] 어떻게 이동 평균 사용하여 MySQL을 계산합니까?
SQL어떻게 이동 평균 사용하여 MySQL을 계산합니까?
내가 좋아하는 뭔가를 할 필요가 :
SELECT value_column1
FROM table1
WHERE datetime_column1 >= '2009-01-01 00:00:00'
ORDER BY datetime_column1;
value_column1에 추가를 제외하고, 또한 value_column1의 이전 (20 개) 값의 이동 평균을 검색해야합니다.
표준 SQL은 바람직하지만 필요하다면 나는 MySQL의 확장 기능을 사용합니다.
해결법
-
==============================
1.이것은 단지 내 머리 위로 떨어져 있으며,이 검증되지 않은, 그래서 나는 문 밖으로가는 중이 야. 나는 또한 대용량 데이터 세트의 종류에 아주 잘 수행 할 것이라고 상상할 수 없다. 내가 확인했던 것이 그 그래도 오류가없는 이상 실행에. :)
이것은 단지 내 머리 위로 떨어져 있으며,이 검증되지 않은, 그래서 나는 문 밖으로가는 중이 야. 나는 또한 대용량 데이터 세트의 종류에 아주 잘 수행 할 것이라고 상상할 수 없다. 내가 확인했던 것이 그 그래도 오류가없는 이상 실행에. :)
SELECT value_column1, ( SELECT AVG(value_column1) AS moving_average FROM Table1 T2 WHERE ( SELECT COUNT(*) FROM Table1 T3 WHERE date_column1 BETWEEN T2.date_column1 AND T1.date_column1 ) BETWEEN 1 AND 20 ) FROM Table1 T1
-
==============================
2.톰 H의 접근 방식은 작동합니다. 당신은 ID 열이있는 경우는 다음과 같이 그것을 단순화 할 수 있습니다 :
톰 H의 접근 방식은 작동합니다. 당신은 ID 열이있는 경우는 다음과 같이 그것을 단순화 할 수 있습니다 :
SELECT T1.id, T1.value_column1, avg(T2.value_column1) FROM table1 T1 INNER JOIN table1 T2 ON T2.Id BETWEEN T1.Id-19 AND T1.Id
-
==============================
3.나는 비슷한 문제가 있었다 때, 나는 여러 가지 이유로 임시 테이블을 사용하여 종료하지만이 훨씬 쉽게했다! 난 당신이 지금까지 스키마가 간다, 무슨 일을하는지 매우 유사 보이는 무슨 짓을.
나는 비슷한 문제가 있었다 때, 나는 여러 가지 이유로 임시 테이블을 사용하여 종료하지만이 훨씬 쉽게했다! 난 당신이 지금까지 스키마가 간다, 무슨 일을하는지 매우 유사 보이는 무슨 짓을.
ID 식별, 시작일, 종료일, 가치와 같은 스키마 뭔가를 확인합니다. 당신이 선택하면, 식별 ID를 기반으로 이전 (20)의 부속 평균을한다.
만 이렇게 당신이 (가 작은 데이터 집합을 가지고 도움이되었다, 그래서 나는 반복해서 다른 메트릭에 대해 동일한 행을 히트)하지만 이미 다른 이유로 임시 테이블을 사용하여 자신을 발견합니다.
-
==============================
4.내 솔루션은 테이블의 행 번호를 추가합니다. 다음 예제 코드 도움이 될 수 있습니다 :
내 솔루션은 테이블의 행 번호를 추가합니다. 다음 예제 코드 도움이 될 수 있습니다 :
set @MA_period=5; select id1,tmp1.date_time,tmp1.c,avg(tmp2.c) from (select @b:=@b+1 as id1,date_time,c from websource.EURUSD,(select @b:=0) bb order by date_time asc) tmp1, (select @a:=@a+1 as id2,date_time,c from websource.EURUSD,(select @a:=0) aa order by date_time asc) tmp2 where id1>@MA_period and id1>=id2 and id2>(id1-@MA_period) group by id1 order by id1 asc,id2 asc
-
==============================
5.나는이 대답은 너무 늦게 칠년에 대한 것을 알고 있습니다. 나는 비슷한 요구 사항을 가지고 그것이 다른 사람에게 유용 경우 내 솔루션을 공유하고자합니다.
나는이 대답은 너무 늦게 칠년에 대한 것을 알고 있습니다. 나는 비슷한 요구 사항을 가지고 그것이 다른 사람에게 유용 경우 내 솔루션을 공유하고자합니다.
이동 평균 간단한을 포함 기술적 분석에 대한 몇 가지 MySQL의 확장 기능이 있습니다. 그들은 정말 설치가 용이하고 사용 위치 : https://github.com/mysqludf/lib_mysqludf_ta#readme
당신이 (추가 정보에 지침에 따라) UDF를 설치 한 후에는이 같은 select 문에서 이동 평균 간단한을 포함 할 수 있습니다 :
SELECT TA_SMA(value_column1, 20) AS sma_20 FROM table1 ORDER BY datetime_column1
-
==============================
6.내 경험에 의하면, MySQL은 5.5.x의로, 의존 선택에 인덱스를 사용 하위 쿼리 여부에 참여하지 않는 경향이있다. 이 종속 선택 기준이 모든 행에 변경 성능에 매우 중요한 영향을 미칠 수 있습니다.
내 경험에 의하면, MySQL은 5.5.x의로, 의존 선택에 인덱스를 사용 하위 쿼리 여부에 참여하지 않는 경향이있다. 이 종속 선택 기준이 모든 행에 변경 성능에 매우 중요한 영향을 미칠 수 있습니다.
평균 이동하면이 범주에 해당하는 쿼리의 예입니다. 실행 시간은 행의 제곱으로 증가 할 수 있습니다. 이를 방지하려면 의존 선택에 인덱스 룩업을 수행 할 수있는 데이터베이스 엔진을 선택했다. 나는 포스트 그레스가이 문제에 대해 효과적으로 작동 찾을 수 있습니다.
from https://stackoverflow.com/questions/878473/how-do-i-calculate-a-moving-average-using-mysql by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] C #을 LINQ에서 구현 RANK OVER SQL 조항 (0) | 2020.07.09 |
---|---|
[SQL] sp_MSforeachdb : 결과 만에 데이터베이스에서 결과를 포함 (0) | 2020.07.09 |
[SQL] JSON 데이터 타입의 레코드 중첩 된 배열 쿼리 조합 (0) | 2020.07.09 |
[SQL] 페이스 북은 운영자와 같은 SQL이 FQL 있습니까? (0) | 2020.07.09 |
[SQL] Critieria API를 NHibernate에있는 하위 쿼리에서 선택 (0) | 2020.07.09 |