본문 바로가기
MySql

MySQL 이동 평균 MySQL 계산?

by 베이스 공부 2021. 1. 3.
반응형

좋은 날,

9 일 이동 평균을 계산하기 위해 다음 코드를 사용하고 있습니다.

SELECT SUM(close)
FROM tbl
WHERE date <= '2002-07-05'
AND name_id = 2
ORDER BY date DESC
LIMIT 9

그러나 제한이 호출되기 전에 반환 된 모든 필드를 먼저 계산하기 때문에 작동하지 않습니다. 즉, 지난 9 일뿐 만 아니라 해당 날짜 이전 또는 그 이전의 모든 마감을 계산합니다.

따라서 직접 계산하는 대신 반환 된 선택에서 SUM을 계산해야합니다.

IE. SELECT ...에서 SUM을 선택합니다.

이제 어떻게하면이 작업을 수행 할 수 있으며 비용이 많이 들고 더 좋은 방법이 있습니까?

 

해결 방법

 

다음과 같은 것을 사용하십시오.

SELECT 
  sum(close) as sum,
  avg(close) as average
FROM (
    SELECT 
      (close)
    FROM 
      tbl
    WHERE 
      date <= '2002-07-05'
      AND name_id = 2
    ORDER BY 
      date DESC
    LIMIT 9 ) temp

내부 쿼리는 필터링 된 모든 행을 desc 순서로 반환 한 다음 반환 된 행을 avg , sum 합니다.

제공된 query 가 작동하지 않는 이유는 sum 이 먼저 계산되고 LIMIT 절이 적용되기 때문입니다. sum 이 이미 계산 된 후 존재하는 모든 행의 sum 을 제공합니다.

 

참조 페이지 https://stackoverflow.com/questions/16121023

 

 

반응형

댓글