1

驚くほど基本的な質問があります。コラムの平均化に関しては、答えはもっと簡単になると思いました。これがサンプル値の私の表です:

表:評価

id, rating, item_id

サンプルデータ

1, 5, 3
2, 1, 2
3, 2, 3
4, 4, 4 
5, 1, 2

item_idの「3」とマークされた平均評価を取得したい場合はどうなりますか

3にはa1があり、別の3には5があるため、実際の答えは2.5になります。

これが私が信じる質問です:

 SELECT avg(rating) as average FROM ratings;

item_idが3の評価のみを指定するにはどうすればよいですか?WHEREを使用しますか?GROUP BY?他に何かありますか?

そして、質問の2番目の部分:これを単一の変数に出力するにはどうすればよいですか?

4

3 に答える 3

4

WHERE句を指定するだけです。

SELECT AVG(rating) AS average
FROM ratings
WHERE item_id = 3
-- returns 1 row

item_idでグループ化されたデータ全体の平均を取得する場合は、次を使用できますGROUP BY

SELECT item_id, AVG(rating) AS average
FROM ratings
GROUP BY item_id
-- returns as many rows as the number of distinct item_ids
于 2012-06-21T22:18:46.963 に答える
2

さて...あなたは試しましたか?

SELECT AVG(rating) FROM ratings WHERE item_id = 3;

rating列が整数型の場合は、代わりにこれを実行することをお勧めします。

SELECT AVG( CAST(rating AS FLOAT) ) FROM ratings WHERE item_id = 3;

また、結果を変数に保存する場合は、次のようにします。

SELECT AVG( CAST(rating AS FLOAT) ) INTO @var FROM ratings WHERE item_id = 3;
SELECT @var;
于 2012-06-21T22:19:02.950 に答える
0

ほとんどのプロジェクトで使用しているアルゴリズムを確認することをお勧めします。複雑なMySQLステートメントや関数は必要ありません。同時に、何百万もの評価を処理している場合でも、平均評価値の取得と更新の両方が1つの行にのみ影響します。すべてが純粋数学に基づいています:)

それをチェックして、それが役立つことを願っています:PHPとMySQLを使用して正しい方法で平均評価を計算する

于 2012-07-03T19:08:35.840 に答える