计算平均值后,在同一个表中合并两行

时间:2017-07-23 03:20:15

标签: mysql sql

我的表中的数据名为价格,如下所示;

+--------------------------------------+-------+-------+--------+------------+
| ID                                   | E5    | E10   | DIESEL | DATE       |
+--------------------------------------+-------+-------+--------+------------+
| a1978958-a6c4-447b-a90c-3d189da0f831 | 1.289 | 1.269 |  1.059 | 07/22/2017 |
| a1978958-a6c4-447b-a90c-3d189da0f831 | 1.259 | 1.239 |  1.029 | 07/22/2017 |
+--------------------------------------+-------+-------+--------+------------+

我想计算E5,E10,DIESEL的平均值。然后我想在同一个表中合并ID和DATE两列。 (列名和顺序将保持不变)

select ID, DATE, avg(E5) as E5, avg(E10) as E10, avg(DIESEL) as DIESEL from prices group by ID, DATE;

然后我插入了以下查询。

select t1.ID, t2.ID, t1.DATE, t2.DATE from prices as t1 inner join prices as t2 on t1.ID = t2.ID and t1.DATE = t2.DATE;

我无法通过两个上述查询来合并两行。结果将是所有行值中的下图。

  +--------------------------------------+-------+-------+--------+------------+
    | ID                                   | E5    | E10   | DIESEL | DATE       |
    +--------------------------------------+-------+-------+--------+------------+
    | a1978958-a6c4-447b-a90c-3d189da0f831 | 1.274 | 1.254 |  1.044 | 07/22/2017 |
    +--------------------------------------+-------+-------+--------+------------+

有什么想法吗?

提前致谢,

2 个答案:

答案 0 :(得分:2)

这是你正在寻找的东西:将结果保存在临时表中,删除实际值,并将avg值插入到同一个表中?

SELECT ID, avg(E5) as E5, avg(E10) as E10, avg(DIESEL) as DIESEL, DATE INTO #TEMP from prices group by ID, DATE
DELETE FROM prices
INSERT INTO prices SELECT * FROM #TEMP
DROP TABLE #TEMP

答案 1 :(得分:1)

你好像要求:

select ID, avg(E5) as E5, avg(E10) as E10, avg(DIESEL) as DIESEL
from prices
group by ID;

这样做你想要的吗?