반응형
좋은 날,
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
반응형
'MySql' 카테고리의 다른 글
MySQL mysqli bind_param ()은 참조가 될 것으로 예상됩니다. (0) | 2021.01.03 |
---|---|
MySQL 모든 원격 사용자에 대해 SSL을 요구하는 방법 (0) | 2021.01.03 |
MySQL PHP / MYSQL로 삭제 전 JavaScript 확인 (0) | 2021.01.03 |
MySQL 대규모 (UUID)를 MySQL 테이블 기본 키로 처리하는 가장 좋은 방법 (0) | 2021.01.03 |
MySQL UTF-8 프랑스어 악센트 부호 문제 (0) | 2021.01.03 |
댓글