【问题标题】:SQL Union or Join to calculate averages from several tablesSQL Union 或 Join 计算多个表的平均值
【发布时间】:2018-04-12 14:20:36
【问题描述】:

假设我有几个这样的表,我需要根据相同的时间戳计算平均值。什么是最好的方法。我应该做外部联接,然后计算每一行或联合的平均值,然后寻找类似的时间戳?

+-----------------+-----------------+-----------------+
|             Time|TimeStamp        |            value|
+-----------------+-----------------+-----------------+
|       Some date |            41526|14               |
|       Some date |            41536|12               |
|       Some date |            41546|32               |
|       Some date |            41555|10               |
|       Some date |            41567|20               |
|       Some date |            41588|15               |
|                 |            41599|12               |

+-----------------+-----------------+-----------------+
|             Time|TimeStamp        |            value|
+-----------------+-----------------+-----------------+
|       Some date |            41526|14               |
|       Some date |            41536|12               |
|       Some date |            41546|32               |
|       Some date |            41555|10               |
|       Some date |            41547|20               |
|       Some date |            41588|15               |
|                 |            41620|15               |

这是结果表示例(

    +-----------------+-----------------+-----------------+
    |             Time|TimeStamp        |            mean |
    +-----------------+-----------------+-----------------+
    |       Some date |            41526|23.32            |
    |       Some date |            41536|43.22            |
    |       Some date |            41546|54.32            |
    |

【问题讨论】:

  • 取决于你想要什么。更好的样本数据和预期的结果会更容易理解。
  • 我想根据时间戳做几个表的平均值
  • 哪个平均值?
  • 表格中的值
  • 基于相同的时间戳取平均值?您要分组的基本字段是什么?您能否举例说明您的预期结果?

标签: sql join union


【解决方案1】:

我怀疑你想要uniongroup by。像这样的:

select time, timestamp, avg(value)
from ((select time, timestamp, value from table1) union all
      (select time, timestamp, value from table2) union all
      (select time, timestamp, value from table3)
     ) t
group by time, timestamp;

【讨论】:

  • time 列添加到SELECTGROUP。这应该得到雅科夫的追求。
  • @Yakov 。 . .这似乎做你想做的事。我不确定将其表达为join 会很容易。
猜你喜欢
  • 2017-02-06
  • 2013-01-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多