2012-09-23 50 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

检查我更新的答案进行排序并选择较高的评级产品。 –