2014-04-07 2 views
0

MySQL을 사용하는 데 질문이 있습니다. 나는 2 개의 테이블을 가지고있다. 하나는 게임의 이름이고 다른 하나는 게임의 등급이다. 나는 이름으로 게임을 검색하고 각 게임의 평균 등급을보고 싶다. 지금까지 나는 평균 등급을 얻을 수 있었지만 여러 항목 대신 1 점의 평가 만 표시합니다. 지금까지 내 질문이 있습니다.MySQL에서 평균 얻기

SELECT games.name, CAST(AVG(reviews.rating) as decimal(6, 1)) AS average_rating 
    FROM games 
    JOIN reviews 
    ON games.id = reviews.game 
    WHERE games.name LIKE '%spider%' 
    AND type = '7' 
    AND rating != 0 

여러분 중 일부는 저와 함께 도울 수 있기를 바랍니다. 감사합니다, Robert

답변

1

당신은 그렇지 않으면 모든 행의 평균을 계산합니다, 각 그룹의 평균을 얻기 위해 적절한 필드에 GROUP BY 절을 사용해야합니다. 나는 그것이 games.id이라고 생각하지만 귀하의 테이블 스키마에 따라 다릅니다. 소위 대해

SELECT games.name, CAST(AVG(reviews.rating) as decimal(6, 1)) AS average_rating 
FROM games 
JOIN reviews 
ON games.id = reviews.game 
WHERE games.name LIKE '%spider%' 
AND type = '7' 
AND rating != 0 
GROUP BY games.id; 

더 읽기 aggregate functions

1

다른 이름을 구분하려면 GROUP BY games.name을 사용해야합니다. 문제는 AVG이 결과를 축소하는 요약 기능이라는 것입니다. GROUP BY은 결과를 제거합니다.

SELECT games.name, CAST(AVG(reviews.rating) as decimal(6, 1)) AS average_rating 
FROM games 
    JOIN reviews ON games.id = reviews.game 
WHERE games.name LIKE '%spider%' AND type = '7' AND rating != 0 
GROUP BY games.name 
관련 문제