2016-09-28 2 views
0

주어진 위도와 경도로 반경 내의 총 평균 가격을 얻으려고합니다.SQL : 반지름 (위도/경도) 내의 결과 집합의 평균

나는 이런 식으로 뭔가를 시도했다 :

SELECT avg(price) AS average, 
    (6371 * acos(cos(radians(37.3541079)) * cos(radians(ANY_VALUE(`latitude`))) * cos(radians(ANY_VALUE(`longitude`)) - radians(-121.9552356)) + sin(radians(37.3541079)) * sin(radians(ANY_VALUE(`latitude`))))) AS distance 
FROM `Rental` 
HAVING distance <= 20 

는하지만 결과는 비어 있습니다. 결과해야 다음과 같습니다

평균 도와 주셔서 = 185 개

감사합니다.

+0

테이블의 스냅 샷과 같은 자세한 내용을 제공해야한다고 생각합니다. 아마 당신은 group by 조항을 놓치고 있다고 느낍니다. 몇 가지 샘플 데이터를 제공하면 많은 일이 분명해질 수 있습니다. –

답변

0

HAVING은 MySQL이 확장하는 방식으로 사용하고 있습니다. 그러나 AVG()이 있으므로 정상적인 역할을합니다.

당신은 WHERE 절에 거리 측정을 이동하는 하위 쿼리를 필요로하거나 예정 :

SELECT avg(price) as average 
FROM (SELECT r.*, 
      (6371 * acos(cos(radians(37.3541079)) * cos(radians(ANY_VALUE(`latitude`))) * cos(radians(ANY_VALUE(`longitude`)) - radians(-121.9552356)) + sin(radians(37.3541079)) * sin(radians(ANY_VALUE(`latitude`))))) AS distance 
     FROM `Rental` r 
    ) r 
WHERE distance <= 20; 

을 즉, 거리를 계산한다. 그런 다음 WHERE을 사용하여 행을 필터링하십시오. 가격은 이고입니다.

+0

큰 감사, 그것은 지금 작동합니다. – Severin

관련 문제