gpt4 book ai didi

mysql - 从具有最大/最小值的记录中提取值

转载 作者:行者123 更新时间:2023-11-29 00:12:27 25 4
gpt4 key购买 nike

我之前发布了一个问题并得到了很好的答案,但我意识到我的逻辑是错误的。给定一个这样的表:

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 的高/低,例如

  • 鲍勃|1|7|200|644|205|850

我正在寻找的是每个唯一名称的每个最低和最高 A 值的 B1 和 B2 值,换句话说,在上面我需要

  • 鲍勃|1|7|200|205|450|850
  • 安|4|9|120|120|145|982

它给出了高 A 值和低 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;

关于mysql - 从具有最大/最小值的记录中提取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24397569/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com