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

GroupByを追加する必要があります。

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

結果を並べ替えるには、GroupByの後にOrderByを使用します

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を使用する評価が高い製品は1つだけです

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