2013-12-16 5 views
1

카테고리 (가격,보기, 시설, 위치)가있는 캠프 사이트에 대한 리뷰 테이블이 있습니다. 다음 쿼리는 네 개의 범주 중 평균 상위 20 개 리뷰를 표시하는 데 사용됩니다.레코드 집합의 평균값을 구하십시오.

나도 같은 캠프장에 대해 둘 이상의 리뷰가 시나리오를 수용하지 않는 쿼리를 실현 그러나
SELECT 
    ROUND(((R.price + R.location + R.facilities + R.view)/4), 2) AS avg, 
    R.poi_id, 
    poi.Name 
FROM 
    `Reviews` AS `R` 
    LEFT JOIN `poi` ON `R`.`poi_id` = `poi`.`ID` 
ORDER BY avg DESC 
LIMIT 20 

.

그래서 poiID의 평균 가격, 전망, 시설, 위치/리뷰의 평균과 함께 최고 등급의 캠프장 (poi)을 반환하는 쿼리가 있습니까?

답변

0

평균 함수는 누적에 물론입니다,하지만 당신은 검토 점수를 보내고 SUM하여 직접 구현하고 COUNT 보내고 그들의 수 있습니다 :

SELECT 
    ROUND(((R.price + R.location + R.facilities + R.view)/4 * cnt), 2) AS avg, 
    R.poi_id, 
    poi.Name 
FROM 
    (SELECT SUM(price) AS price, 
      SUM(location) AS location, 
      SUM(facilities) AS facilities, 
      SUM(view) AS view, 
      COUNT(*) AS cnt, 
      poi_id 
    FROM Review 
    GROUP BY poi_id) AS `R` 
    LEFT JOIN `poi` ON `R`.`poi_id` = `poi`.`ID` 
ORDER BY avg DESC 
LIMIT 20 
관련 문제