我之前发布了一个问题,得到了一个很好的答案,但意识到我以错误的方式讨论了我的逻辑。给定这样一个表:
Name|ValueA|ValueB1|ValueB2
Bob | 1| 200| 205
Bob | 2| 500| 625
Bob | 7| 450| 850
Bob | 3| 644| 125
Ann | 4| 120| 120
Ann | 8| 451| 191
Ann | 9| 145| 982
我最初试图获取每个唯一名称的最大/最小值,最后得到
Create TableA as (Select Name,Max(ValueA),Min(ValueA),Max(ValueB1,Max(ValueB2) Group by Name)
但这自然给了我A,B1,B2的高/低值,例如
我正在寻找的是每个唯一名称的最低和最高A值的B1和B2值,换句话说,我需要
这给出了高和低A值以及高和低A值记录中包含的值的B1和B2。
(这不是重复的问题。我的最后一个问题询问并回答了如何将给定唯一名称的三个不同字段的高值和低值拉到新表中。事实证明,尽管第一个问题成功完成,但这并不是我所需要的答案(并以此标记)。我需要的是给定名称的另一个字段的高值和低值中的两个字段的值。如果您查看问题,您会发现事实是这样,解决方案实际上是不同)
SELECT tmin.Name, tmin.ValueA, tmax.ValueA,
tmin.ValueB1, tmin.ValueB2, tmax.ValueB1, tmax.ValueB2
FROM (
SELECT Name, MAX(ValueA) AS ValueAMax, MIN(ValueA) AS ValueAMin
FROM `foo`
GROUP BY Name
) AS t
JOIN `foo` AS tmin ON t.Name = tmin.Name AND t.ValueAMin = tmin.ValueA
JOIN `foo` AS tmax ON t.Name = tmax.Name AND t.ValueAMax = tmax.ValueA;
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句