私は昨日同様の質問をしましたが、正しく答えられました。自己結合とランキングを必要とする SQL この質問は似ていますが、答えを適合させることができません。
私はサッカーの結果の表を持っています:
CREATE TABLE matches(
season NUMBER(4),
matchDate DATE,
homeTeam VARCHAR2(25),
awayTeam VARCHAR2(25),
homeGoals NUMBER(2),
awayGoals NUMBER(2),
totalGoals NUMBER(3));
INSERT ステートメントはここにあります: https://gist.github.com/2941229
次のように totalGoals の値を計算したいと思います。これは、現在のホーム チームがプレーした直近 5 試合で得点した合計ゴール数 (homeGoals+awayGoals) に、現在の試合前に現在のアウェイ チームがプレーした直近 5 試合で得点したゴール数を加えたものです。現在の試合のゴールを含めてはなりません。
昨日の質問との違いは、ホームチームがホームでプレーし、アウェイチームがアウェイでプレーした過去の試合のみをカウントしたことです。この質問では、ホームチームが以前にホームでプレーしたかアウェイでプレーしたかは問題ではありません。彼らは、その前の試合のチームの 1 つでなければなりませんでした。
以前と同様に、現在のシーズンの試合のみを使用する必要があり、いずれかのチームがシーズン中に 5 試合を行っていない場合、totalGoals は NULL のままにする必要があります。
PL/SQL を使用してこれを行うことができますが、SQL クエリの方がはるかに好ましいと思います。昨日のソリューションは、PL/SQL よりも約 1000 倍高速でした。
ありがとうタムズ