こんにちは私は、次のように、製品の数とそれぞれの評価を含む表を持っています。いくつかの理由により、各製品の行と、それを評価した各人の割合が異なります。
p1 2
p2 4
p3 4
p1 4
p1 5
p1 3
p2 7
次のクエリを使用していますが、すべての製品の平均レートが表示されていますが、各製品の平均レートが個別に表示されることを期待しています。
Select ProductName, AVG(Rate) FROM Products
ただ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
)
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