私は、プレーヤに関するデータと今シーズンボーリングした試合をリーグ中にボーリングセンターで持っているテーブルをいくつか持っています。この特定のクエリが使用されているのは、今年の男性と女性のトップXの平均を並べ替えることです。私はこれをすべて持っていますが、いくつかの選手が複数のリーグでプレーし、トップXに2つ以上の平均を持っている場合には、まだ問題があります。SQLクエリ内の個々のレコードごとに最大平均を取得
明らかに、プレイヤーAの平均値がリーグABCで200、リーグDEFで198で2番目に高い場合、私は200のリストを望むだけです。
ここでは、手動で重複を削除する必要があるか、別の言語でソーターを作成する必要があるので、私は変更したい単純なバージョンのクエリーですが、純粋なSQL 。 (私はこの例のクエリから無関係な情報を除去):
SELECT playerId, ROUND(AVG(score),2)Average, season, leagueName, COUNT(score)NumGames FROM Scores
WHERE season = '2011-2012' AND score > -1
GROUP BY season, playerID, leagueName
ORDER BY Average DESC LIMIT 0,30
基本的に、Scores
テーブルは、個々のゲーム、playerId、ゲームがプレイされた季節とleagueName(及び他の列含有しますこの例では必須ではありません)。
WHERE
は、ゲームが今シーズンに行われ、スコアが正であることを確認することです(-1は人がいない場合)。私はすべてのシーズンをplayerIDとleagueNameでグループ化するので、異なるリーグでプレーされたすべてのゲームの平均ではなく、各プレイヤーの平均PER LEAGUEを取得します。
キーワードDISTINCT
を使用しようとしましたが、1つの列に対してDISTINCT
を使用できないため、これは機能しません。私も他のものを試してみましたが、そのうち誰も作業に近づいていませんでしたので、これを実行することが可能かどうか、または別の言語を使用してこの結果セットをソートして重複を取り除く必要があるかどうか疑問です。
一時テーブルを必要とせずに単一のクエリで動作するので、これは私の好みの答えです。ありがとう、トン! –