2017-10-10 8 views
0

私はSQL Selectを実行しようとしていますが、私が試行するたびに、私は確かにこのために作られていないことを認識しています。SQL select:ユーザーからの設定に対するすべての評価を集計します。

設定は次のとおりです。

私は2つのテーブルを持っています。 1つはゲーマー、例えば名前が格納されている場所、もう1つはユーザー(ユーザーテーブルは重要ではない)がゲーマーのセットアップ(セットアップテーブルも重要ではない)に投票できる場所です。

ゲーマーは複数の設定を持つことができるので、どのユーザーがどのgamersetup(すべてID付き)に投票したか、ユーザーが与えたポイント数、およびユーザーが設定した設定が保存されます。

私はあなたのためにSQL Fiddleを作成しましたHERE

評価(すべての設定に注意を払ってください)のリストを評価順に並べようとしています(ここで重要なことは、この設定に投票したユーザーの数でSUM )DESC

私はこのようなものを試しましたが、もちろんそれは動作しません。私はひどく失敗した SELECT gamersetupratingsのGSR FROM gsr.gsr_setup_id合計(gsr.gsr_rating)、(ゲーマーFROM gamer_idを選択)g.gamer_id = gsr.gsr_rated_id WHERE gsr_rated_id = ON gとゲーマーを登録しよう

私の友人と、おそらく皆さんより多くのスキルを持っている。

お時間をいただき、ありがとうございます。夜には

答えて

0

はあなたがのための単一の行が必要な場合は、それ以外の場合は

SELECT sum(gsr.gsr_rating) 
, gsr.gsr_setup_id 
FROM gamersetupratings gsr 
JOIN gamer as g ON g.gamer_id=gsr.gsr_rated_id 
WHERE gsr_rated_id in (SELECT gamer_id FROM gamer) 

をあなたが句で使用することができます(または参加する)あなたの試合のための行、より多くを必要とする場合は、副選択 からのエラーを持っているSQLFIDDLE副選択あなたは条件に参加で必要alredy値を持っているあなたは、リミット1

SELECT sum(gsr.gsr_rating) 
    , gsr.gsr_setup_id 
    FROM gamersetupratings gsr 
    JOIN gamer as g ON g.gamer_id=gsr.gsr_rated_id 
    WHERE gsr_rated_id = (SELECT gamer_id FROM gamer order by gamer_id limit 1) 

を使用することができますが、副選択を必要としない

SELECT sum(gsr.gsr_rating) 
, gsr.gsr_setup_id 
FROM gamersetupratings gsr 
JOIN gamer as g ON g.gamer_id=gsr.gsr_rated_id 
+0

のように置くことを置くことができますしたい場合。すべてを追加するのは目的ではない、私はすでにそれを持っている。私は、すべての設定のリストを評価順に並べようとしています。 –

+0

then ..あなたの質問を更新して、適切なデータサンプルを追加し、全体的にあなたのエクスクルーテッド結果を追加します。ただし、データサンプルではありません – scaisEdge

0

これは、あなたに別個のゲームIDと、それぞれの平均格付けが何であるかを示します。私が誤解していない限り、私は各gsr_setup_idの平均値を探しているだけでよいと思います。

SELECT COUNT(gsr_setup_id) as timesVotedFor, 
AVG(gsr_rating) as rating, 
GSR_SETUP_ID as setupID 
FROM gamersetupratings 
GROUP BY gsr_setup_id 
ORDER BY rating desc; 
0

以下のクエリで希望の結果が得られます。

SELECT sum(gsr.gsr_rating) as gsr_rating, gsr.gsr_setup_id, 
    sum(gsr.gsr_rating) /count(gsr.gsr_rated_id) as sorting_value 
    FROM 
    gamersetupratings gsr 
    JOIN gamer as g 
    ON g.gamer_id=gsr.gsr_rated_id 
    Group by gsr.gsr_setup_id 
    Order by sorting_value desc 

あなたが直接sum(gsr.gsr_rating)/count(gsr.gsr_rated_id)order by句の値ではなく、問題をより良く理解するために、私はちょうど私が探しているものを、残念ながらありませんその

関連する問題