以下のコードには、2 つのテーブルがあります。これらを結合し、「スポット」で GROUP BY を実行してから、結合によって計算された値で MIN() を実行します。
問題は、結果の行の Column2 の値も取得したいということです。Column2 は GROUP BY の一部ではなく、集計関数の一部でもないため、現時点ではこれをすぐに選択することはできません。
また、この列を取得するためにデータに対して 3 番目の JOIN を実行することはできません。これは、結合条件が DerivedValue にあるため、円を描くことになるためです。これを取得するには、別の GROUP BY を生成する必要があります。 ……と、グルグル回っていきます。
理解するのに役立つ場合-temp4は1と0を含む単なるテーブルであり、マスクを実行します(したがって、MIN()はこれら2つの乗算で行われます).....
編集:同じテーブルに参加している理由は、マトリックスから2つの値を効果的に減算しているためであり、1行で正しい値をすべて減算する最も簡単な方法であったことに注意してください。
SELECT temp3.Column1, min(temp3.DerivedValue * Probability) FROM
(SELECT temp1.Spot AS Spot, temp1.Vol AS Vol, temp1.Value- temp2.Value AS DerivedValue FROM
(SELECT Spot, Vol, Value FROM My_Table_1) temp1
INNER JOIN
(SELECT Spot, Vol, Value FROM My_Table_1) temp2
ON temp1.Spot = temp2.Spot) temp3
JOIN
(SELECT Spot, Vol, Probability FROM My_Table_2) temp4
ON temp3.Spot = temp4.Spot AND temp3.Vol = temp4.Vol
GROUP BY temp3.Spot