从另一个中的最大值和最小值创建表

时间:2014-06-24 13:23:24

标签: mysql max min create-table

我的表名为Name | ValueA | ValueB.1 | ValueB,2其中Name不唯一。

我想为每个名称提取低和高A值的B.1和B.2值。

  • 鲍勃| 1 | 200 | 205
  • 鲍勃| 2 | 500 | 625
  • 鲍勃| 7 | 450 | 850
  • 鲍勃| 3 | 644 | 125 |
  • 安| 4 | 120 | 120
  • 安| 8 | 451 | 191
  • 安| 9 | 145 | 982

我想要一个具有唯一名称的新表,其中包含高和低ValueA,ValueB.1,ValueB.2

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

我记得有一些方法可以使用min / max,但我不知道如何设置查询来提取新表。

2 个答案:

答案 0 :(得分:2)

    INSERT newtable (Name, ValueA, ValueB.1, ValueB.2)
      SELECT Name,MAX(ValueA),MIN(ValueA),MAX(ValueB.1),MIN(Value B.1),
        MAX(ValueB.2),MIN(ValueB.2)
      FROM oldtable GROUP BY Name

应该做的伎俩。

答案 1 :(得分:0)

假设A的值不同(至少在name内):

INSERT
INTO    newtable
SELECT  name, mmin.a, mmax.a, mmin.b1, mmin.b2, mmax.b1, mmax.b2
FROM    (
        SELECT  name, MIN(a) mina, MAX(a) maxa
        FROM    mytable
        GROUP BY
                name
        ) md
JOIN    mytable mmin
ON      (mmin.name, mmin.a) = (md.name, md.mina)
JOIN    mytable mmax
ON      (mmin.name, mmin.a) = (md.name, md.maxa)