2

嗨,我有一个表格,其中包含产品数量和每个产品的评分,由于某些原因,我有每个产品的不同行以及每个对其进行评分的人的比率,如下所示:

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

我正在使用以下查询,但它显示了所有产品的平均费率,但我希望它单独显示每个产品的平均费率。

Select ProductName, AVG(Rate) FROM Products 
4

2 回答 2

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
)
于 2012-09-23T10:06:55.587 回答
2

您需要添加分组依据。

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

要对结果进行排序,请在 Group By 之后使用 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)

此查询返回所有具有最高平均评分的产品。

只有一种评分较高的产品在降序中使用 LIMIT

 Select ProductName, AVG(Rate) FROM Products GROUP BY ProductName 
 ORDER BY ProductName DESC
 LIMIT 1
于 2012-09-23T10:07:03.747 回答