Saturday, 10 February 2018

평균 이동 평균 쿼리


이것은 Evergreen Joe Celko의 질문입니다. 어떤 DBMS 플랫폼이 사용되는지는 무시됩니다. 하지만 Joe는 10 년 전에 표준 SQL을 사용하여 응답 할 수있었습니다. Joe Celko SQL Puzzles and Answers 인용문 마지막 업데이트 시도에서 우리는 술어를 사용할 수 있다고 제안합니다. 우리에게 이동 평균을 줄 수있는 쿼리를 만들 수 있습니다. 추가 열 또는 쿼리 접근 방식이 더 좋습니다. UPDATE 방식으로 데이터베이스를 비정규 화합니다. 그러나 기록되는 기록 데이터가 변경되지 않고 이동 평균은 비싸다, 당신은 열 방법을 사용하는 것을 고려할지도 모르다. SQL 수수께끼 query. by는 모든 것을 의미한다. 당신은 현재 시간 점에서 거리에 따라서 적합한 무게 양동이에 던지십시오. 예를 들면 현재 datapoint에서 24hrs 내의 datapoints를위한 무게 1 48 시간 내에 데이터 포인트에 대한 가중치 0 5 6 12am과 11 48pm과 같은 연속적인 데이터 포인트가 서로 얼마나 멀리 떨어져 있는지가 중요합니다. 데이터 포인트가 너무 빽빽하지 않은 곳에서는 히스토그램을 부드럽게 만들려고 생각합니다. msciwoj 5 월 27 일 오후 22시 22 일. 기대되는 결과 출력이 3 일 동안 고전적인 간단한 이동 평균을 표시하는지 확신하지 못합니다. 예를 들어, 첫 번째 정의에 따르면 3 배의 숫자가 나온다. 그러나 당신은 4 360을 기대하며 혼란 스럽다. 그럼에도 불구하고 나는 윈도우 함수 AVG를 사용하는 다음 해결책을 제안한다. 이 접근법은 다른 곳에서 소개 된 SELF-JOIN보다 훨씬 더 명확하고 자원 집약적이다. 해답은 아무도 더 나은 솔루션을 제공하지 않는다는 사실에 놀랐습니다. AVG는 rownum이 첫 번째 행에 NULL을 강제로 넣을 때 케이스로 싸여 있습니다. 3 일 이동 평균은 의미가 없습니다. 2 월 23 일 16시 13 분 12.We Joe Celko는 위의 Diego Scaravaggi가 질문 한대로 질문에 대답하기 위해 위의 인용 된 외부 조인 방법을 적용 할 수 있습니다. 요청 된 결과를 생성합니다. 1 월 9 일 16시 33 분에 답변합니다. 답변 2017 Stack Exchange, Inc. SQL Server 2008 R2 사용 , 이동 평균을 계산하려고 내보기에서 각 레코드에 대해 250 이전 레코드의 값을 수집하고이 선택 영역에 대한 평균을 계산할 싶습니다. 내보기 열은 다음과 같습니다. 트랜잭션 ID는 고유합니다. 각 TransactionID에 대해 I 이전 250 개의 레코드에 대해 컬럼 값의 평균을 계산하고 싶습니다. 따라서 TransactionID 300의 경우 이전 250 개의 로우에서 모든 값을 수집합니다. View는 TransactionID에 따라 내림차순으로 정렬 된 다음 MovAvg 컬럼에서 정렬 된 값의 평균을 작성합니다 레코드 범위 내에서 데이터를 수집하십시오. 10 월 28 일 14시 58 분 20 초. 간단한 이동 평균을 사용하여 데이터를 부드럽게 처리하는 것은 널리 사용되는 기술이므로 SQL Anywhere 도움말의 기본 예제는 단순하지 않습니다. 너무 복잡합니다. 문제 설명 외에도 2000 년에 모든 제품 판매의 이동 평균을 계산합니다. 여기가 복잡해집니다. AVG 함수에 대한 두 가지 참조. GROUP BY 모두 그 자체만으로도 어떤 SELECT를 머리 쓰는 사람이라도 할 수 있습니다. 스텔스 WINDOW 절. WINDOW 절을 사용하지 않는 WINDOW 절은 WINDOW 키워드를 아무 것도 모르는 사람들에게 사용합니다. WINDOW 절은 누구와도 관련이 없습니다. WINDOW 절이 아니라 마음에 들었습니다. WINDOW. a PARTITION BY. a RANGE 절에 코딩 할 수있는 모든 단일 구성 요소를 포함하는 구문은 간단한 ROWS 절이 아니라 완전한 RANGE 절, ORDER BY와 친밀한 관계가있는 행, 이 예제의 RANGE에 대한 RANGE의 선택은이 특정 예제에 대한보다 완전한 설명을 위해 쿼리를 올바르게 조작하는 데 중요합니다. 예 23 - 이동 평균 계산 Glenn Paulley의 탁월한 OLAP 백서 이제부터는 다시 돌아가 보자. 정말로 정말로 단순한 이동 평균. 다음 예제는 오늘날의 가치와 어제의 이동 평균과 함께 10 일 분량의 데이터를 표시합니다. 라인의 WINDOW 절 21 ~ 23 오늘 두 행을 포함하는 움직이는 창을 정의합니다. CURRENT ROW와 어제의 행 1 PRECEDING. WINDOW ORDER BY 절은 PRECEDING이 선행 행을 의미 하는지를 결정하고 ROWS 절은 창의 크기를 항상 두 행으로 결정합니다. 표현식 평균 19 번째 줄에있는 AVG는 WINDOW 절을 이름으로 참조하며 SQL Anywhere에 결과 집합의 각 행에 대한 2 행 슬라이딩 창에있는 두 값의 평균을 계산하도록 지시합니다. 그래서 2012 년 -02-02 10과 20의 평균은 15 000000입니다. for 2012-02-03 20과 10의 평균은 15 000000입니다. 2012-02-04 평균 10과 30은 20 000000입니다. 2012-02 -10과 60의 평균은 35 000000입니다. 첫 번째 행은 어떨까요? 2012-02-01 행에는 PRECEDING 행이 없으므로 움직이는 창에 대한 평균은 무엇입니까? Glenn Paulley의 흰색에 따르면 용지가 이동하는 경우에는 Null 값을 포함하는 행이 첫 번째 행 앞에 있고 마지막 행 뒤의 행은 inpu에 있다고 가정합니다 t. 이동 창이 2012-02-01에 CURRENT ROW로있을 때 1 PRECEDING 행에 NULL 값이 포함되고 SQL Anywhere가 NULL 값을 포함하는 AVG를 계산할 때 NULL이 아닌 것으로 간주합니다. 분자 또는 분모에서 평균을 계산할 때 여기에 증거 그게 왜 twodayaverage 10 000000 첫 번째 행에 대한 2012 년 2 월 1 일. 오후 3시 47 분에 브렉 카터에 의해 게시됩니다.

No comments:

Post a Comment