【问题标题】:Mysql query: combine multiple rows in one row grouped by date [duplicate]Mysql查询:将多行组合在按日期分组的一行中[重复]
【发布时间】:2021-04-03 18:08:51
【问题描述】:

我正在从 8 个不同的传感器收集温度和湿度。不幸的是,我设计了错误的表格,我为每个传感器测量使用了一行。

    id          sensor         date            temperature
100576           8  12/25/2020 18:29          38
100575           1  12/25/2020 18:29         17.2
100574           2  12/25/2020 18:29          5.8
100573           3  12/25/2020 18:29         -9.2
100572           7  12/25/2020 18:29         14.9
100571           6  12/25/2020 18:29         16.6
100570           5  12/25/2020 18:29         -8.9
100569           4  12/25/2020 18:29         19.8
100568           8  12/25/2020 18:28          39
100567           1  12/25/2020 18:28         17.2
100566           2  12/25/2020 18:28          5.8
100565           3  12/25/2020 18:28         -9.2
100564           7  12/25/2020 18:28          15
100563           6  12/25/2020 18:28         16.6
100562           5  12/25/2020 18:28         -8.8
100561           4  12/25/2020 18:28         19.8

我想编写一个 mysql 查询,其中所有传感器按日期分组在一行中

  date             sensor1    sensor2    sensor3    sensor4    sensor5    sensor6    sensor7    sensor8
12/25/202018:28      17.2       5.8        -9.2       19.8       -8.9       16.6       14.9        39
12/25/202018:29      17.2       5.8        -9.2       19.8       -8.8       16.6        15         39

有没有简单的方法来做到这一点? 谢谢!

【问题讨论】:

  • 考虑处理应用代码中数据显示的问题
  • ...并使用该数据的正确数据类型存储数据

标签: mysql datetime mariadb pivot


【解决方案1】:

要旋转数据集以进行显示,请使用条件聚合:

select date,
    max(case when sensor = 1 then temperature end) as sensor1,
    max(case when sensor = 2 then temperature end) as sensor2,
    ...
from mytable
group by date

注意:您的设计是存储数据的正确方式;每个传感器值都存储在单独的行中,这是应该的。

【讨论】:

  • 哇。像魅力一样工作...感谢您的回答和帮助!
猜你喜欢
  • 2013-08-14
  • 1970-01-01
  • 2015-05-11
  • 1970-01-01
  • 2021-09-18
  • 2021-02-25
  • 1970-01-01
  • 1970-01-01
  • 2019-04-03
相关资源
最近更新 更多