0

製品の表と評価の表があります。次のクエリがあります。

SELECT products.name, ratings.rating 
FROM   products 
       LEFT OUTER JOIN ratings 
       ON products.id = ratings.product_id;

製品の名前とすべての評価を個別に含む行の素敵なリストを返します。

製品の名前と平均評価を示す1行を返すことを達成しようとしています。しかし、方法を見つけることができないようです。

前もって感謝します。

4

1 に答える 1

2

GROUP BY ステートメントを調べます。例:

SELECT products.name AS Product_Name, 
       AVG(ratings.rating) AS Average_Rating
FROM   products 
       LEFT OUTER JOIN ratings 
       ON products.id = ratings.product_id
GROUP BY products.name
ORDER BY products.name;

GROUP BY ステートメントを使用しているときに、1 つ以上の集計関数の結果で結果セットをフィルタリングしたい場合があります。これを行うには、HAVING ステートメントを使用します。

SELECT products.name AS Product_Name, 
       AVG(ratings.rating) AS Average_Rating
FROM   products 
       LEFT OUTER JOIN ratings 
       ON products.id = ratings.product_id
GROUP BY products.name
HAVING AVG(ratings.rating) >= 3
ORDER BY products.name;
于 2013-01-23T23:43:08.713 に答える