在下面的代码中,我有两个表。我加入这些,对“Spot”执行 GROUP BY,然后对通过连接计算的值执行 MIN()。
问题是我还希望为我的结果行获取 Column2 的值。目前我无法立即选择它,因为 Column2 不是 GROUP BY 的一部分,也不是聚合函数的一部分。
此外,我无法对数据执行第三次 JOIN 以获取此列,因为我最终只会绕圈子,因为我的连接条件将在 DerivedValue 上,为了得到这个,我需要生成另一个 GROUP BY。 ....我会绕圈子。
如果它有助于理解- temp4 只是一个包含 1 和 0 的表,执行掩码(因此 MIN() 是在这两个相乘上完成的).....
编辑:请注意,我加入同一张表的原因是因为我有效地从矩阵中减去了两个值,这是在一行中得到正确值的最简单方法。
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