【问题标题】:Merge two rows in a same table after calculating average values计算平均值后合并同一张表中的两行
【发布时间】:2017-07-23 03:20:14
【问题描述】:

我的表中有名为 prices 的数据,如下所示;

+--------------------------------------+-------+-------+--------+------------+
| 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 |
    +--------------------------------------+-------+-------+--------+------------+

有什么办法吗?

提前致谢,

【问题讨论】:

  • 您的第一个查询是我会给出的答案,但显然您还有其他想法。你能告诉我们你的预期输出吗?
  • 当我输入第一个查询时,我会得到正确的结果。但是我想将此值保存到我的表中,这样我就不会在上图中有值。例如,我有 a1978958-a6c4-447b-a90c-3d189da0f831 id 值,它有多个具有相同日期的行。我想将此作为唯一行保存到表中
  • 原来的两条记录会怎样?你能把你想要的结果放到一个新表中吗?

标签: mysql sql


【解决方案1】:

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

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

【讨论】:

  • 当我输入第一个查询时,我会得到正确的结果。但我想将此值保存到我的表中,这样我就不会在上图中有值。例如,我有 a1978958-a6c4-447b-a90c-3d189da0f831 id 值,它有多个具有相同日期的行。我想将此作为唯一行保存到表中
【解决方案2】:

您似乎在要求:

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

这是你想要的吗?

【讨论】:

    猜你喜欢
    • 2021-02-02
    • 2017-07-19
    • 2018-12-24
    • 2018-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-24
    • 2019-01-05
    相关资源
    最近更新 更多