2012-09-23 77 views
2

嗨我有一個表中有每個產品的數量和評級,由於某些原因,我有不同的行每個產品以及評價它的每個人的比率,如下所示:不知道如何寫一個簡單的查詢

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

我使用下面的查詢,但它顯示的所有產品的平均率,但我期待它來顯示每個產品的平均速率seperately。

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

感謝怎麼樣的一個最高速度? –

+0

@EmeEmertana查看我的編輯 –

2

您需要添加分組依據。

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

要排序的結果使用ORDER BY集團後通過

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

上面的查詢排序結果按升序排列,如果你想按降序排序,然後使用DESC

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

檢查我更新的答案進行排序並選擇較高的評級產品。 –