2012-09-23 2 views
2

안녕하세요. 다음과 같이 각 제품의 행과 각 행의 등급이 다른 이유 때문에 제품 수와 등급이 각각 다른 테이블이 있습니다. 간단한 쿼리를 작성하는 방법을 모르십니까?

p1 2 
p2 4 
p3 4 
p1 4 
p1 5 
p1 3 
p2 7 

나는 다음과 같은 쿼리를 사용하고 있지만, 모든 제품의 평균 속도를 보여 주지만, 나는 그것이 별도로 각 제품의 평균 속도를 보여 기대하고있다.

Select ProductName, AVG(Rate) FROM Products 

답변

2

그냥 GROUP BY productName :

Select ProductName, AVG(Rate) AS 'Average Rate' 
FROM Products 
GROUP BY productName 

편집 : 가장 높은 평균 제품 이름을 얻으려면 :

SELECT ProductName, Rate 
FROM Products 
ORDER BY rate DESC 
LIMIT 1 

편집 2 :가 가장 높은 비율을 가진 하나를 표시하려면 비율 :

SELECT productname, AVG(rate) Avgrate 
FROM Products 
GROUP BY productname 
HAVING AVG(rate) = 
(
    SELECT AVG(rate) 
    FROM Products 
    GROUP BY productname 
    ORDER BY AVG(rate) DESC 
    LIMIT 1 
) 
+0

감사를 내림차순으로 높은 평가 사용 LIMIT 만 한 제품? –

+0

@EmeEmertana 편집 내역보기 –

2

그룹 별을 추가해야합니다. 당신이 DESC 사용 후 내림차순으로 정렬 할 경우 쿼리가 오름차순으로 정렬 결과보다도

Select ProductName, AVG(Rate) FROM Products GROUP BY ProductName 

Select ProductName, AVG(Rate) FROM Products GROUP BY ProductName ORDER BY ProductName 

하여 그룹 후함으로써 결과의 사용 순서를 정렬하려면

Select ProductName, AVG(Rate) FROM Products GROUP BY ProductName ORDER BY ProductName DESC 

더 높은 등급 제품을 선택하려면

Select ProductName, AVG(Rate) FROM Products GROUP BY ProductName 
HAVING AVG(Rate) = (SELECT MAX(AVG(Rate)) FROM Products GROUP BY ProductName) 

이 쿼리는 최대 평균 등급을 갖는 모든 제품을 반환합니다.

어떻게 가장 높은 비율을 가진 사람에 대해 정렬

Select ProductName, AVG(Rate) FROM Products GROUP BY ProductName 
ORDER BY ProductName DESC 
LIMIT 1 
+0

GROUP의 정보는이 링크를 참조하십시오. http://www.w3schools.com/sql/sql_groupby.asp –

+0

가장 높은 요금을 표시 할 수있는 방법을 말해 줄 수 있습니까? 또한 모든 요금을 표시 할 경우 정렬하는 방법 –

+0

업데이트 된 답변을 확인하여 등급이 높은 제품을 정렬하고 선택하십시오. –

관련 문제