私はゲームで各プレイヤーの得点を記録するクリケットデータベースに簡単なテーブルを持っています。フィールドは、プレイヤーの名前、特定のゲームで得点したラン、試合の最後に「出ていない」、「出ていない」のいずれかです。明らかに、プレイヤーはプレイした試合と同じくらい多くの時間テーブルに出現する選択クエリでCASE WHENを使用するPostgreSQL
プレイヤーごとに平均「ラン」を与えるクエリを実行したい。クリケットでは、これは彼らの総ランを取って、彼らは「アウト」された回数だけで割ることによって行われ、私がしようとしているコードは次のようなものです:
SELECT name,
SUM(runs)/COUNT(CASE WHEN playerout = 'out' THEN name END)
FROM players
GROUP BY name;
このアイデアは、のためにということで各プレイヤーは、彼らのランを合計し、「ノウトウ」を無視して、それらが「出ている」回数だけ分ける。私は 'ELSE 0'を追加しようとしましたが、整数型と文字型が混在しているためにエラーが返されます。
が
クエリは、彼らが出て終了しているか否かにかかわらず、すべてのゲームでは、プレイヤーの実行を追加し、彼らが出ていた回数によって分割する必要があります更新。例えば、1人のプレイヤーが次のようなマッチをした場合: 1. 10回実行中、 2. 20回実行中、 3. 30回実行中、実行中ではありません 平均回数は合計実行回数(10 + 20 + 30)= 60、彼らが出ていた回数(2)で割り算したので、その平均は30となります。
おそらく私が実現していない明らかな解決策があります - 何か提案がありますか?
サンプルデータ(出入り口を含む)と期待される結果を提供してもらえますか? –