gpt4 book ai didi

MySQL - 一行中具有相同时间戳的所有条目

转载 作者:行者123 更新时间:2023-11-29 20:53:50 25 4
gpt4 key购买 nike

我最近使用 MySQL 构建了我的第一个数据库。我用它每十分钟记录来自十个不同传感器的数据。每个传感器都有一个唯一的 ID,所有传感器都会同时读出,以便十个条目获得相同的时间戳。数据库如下所示:

sensor_id |      timestamp      | sensor_value |
1 | 2016-06-13 20:40:00 | 19.1 |
2 | 2016-06-13 20:40:00 | 20.1 |
3 | 2016-06-13 20:40:00 | 21.5 |
.
.
.
10 | 2016-06-13 20:40:00 | 18.7 |
1 | 2016-06-13 20:50:00 | 19.4 |
2 | 2016-06-13 20:50:00 | 20.2 |
3 | 2016-06-13 20:50:00 | 22.1 |
.
.
.
10 | 2016-06-13 20:50:00 | 17.9 |
.
.
.

现在我想以这样的方式导出数据,即为每个时间戳获取一行,并包含十个后续列,其中包含十个传感器的值:

                    |   1  |   2  |   3  | ... |   10 |
2016-06-13 20:40:00 | 19.1 | 20.1 | 21.5 | ... | 18.7 |
2016-06-13 20:50:00 | 19.4 | 20.2 | 22.1 | ... | 17.9 |
.
.
.

我尝试使用 GROUP_CONCAT 并几乎得到了我正在寻找的东西。但这给了我一列中的所有传感器值作为逗号分隔的列表

     timestamp      | GROUP_CONCAT(sensor_value) |
2016-06-13 20:40:00 | 19.1,20.1,21.5,...,18.7 |
2016-06-13 20:50:00 | 19.4,20.2,22.1,...,17.9 |
.
.
.

不幸的是,有时其中一个传感器无法提供其值,并且没有任何条目添加到我的数据库中。因此,有时只有九个值具有相同的时间戳。并且逗号分隔的列表无法告诉我缺少哪个传感器。这就是为什么每个唯一的传感器 ID 需要一列的原因。有没有办法实现这个目标?

我尝试通过浏览 Stack Overflow 来解决这个问题,但由于我对 MySQL 和数据库相当陌生,因此我无法在不发布新问题的情况下解决我的问题。如果在此之前已被询问并回答,我很抱歉,如果有人将我重定向到正确的方向,我会很高兴。

谢谢!

最佳答案

只需使用条件聚合:

select timestamp,
max(case when sensor_id = 1 then sensor_value end) as sensor_1,
max(case when sensor_id = 2 then sensor_value end) as sensor_2,
. . .
from t
group by timestamp;

关于MySQL - 一行中具有相同时间戳的所有条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37797161/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com