gpt4 book ai didi

mysql - 如何将一列拆分为按日期排序的多列

转载 作者:行者123 更新时间:2023-11-29 02:58:52 25 4
gpt4 key购买 nike

在尝试以正确格式获取数据库数据时,我遇到了很多问题。我正在寻找按天按列打印数据库输出的方法。

我的数据库有两列,一列带有时间戳,格式如YYYY-MM-DD H:M,另一列包含与速度相关的数据。

我需要按天将速度数据拆分成列。

或多或少,我的数据库是这样的(每天有 288 条数据):

 Timestamp          |   Speed

2014-05-01 00:03:00 | 328.71
2014-05-01 00:18:00 | 331.31
2014-05-01 00:33:00 | 193.83
2014-05-02 00:03:00 | 321.21
2014-05-02 00:18:00 | 290.39
2014-05-02 00:33:00 | 283.43

我正在寻找的是:

Hour    | 2014-05-01 | 2014-05-02

00:03:00 | 328.71 | 321.21
00:18:00 | 331.31 | 290.39
00:33:00 | 193.83 | 283.43

首先,我尝试过以静态的方式进行,但是当我得到它时,我会进行动态的。

我的查询是

SELECT 
(CASE WHEN Timestamp>='2014-05-01' AND Timestamp<='2014-05-03'
THEN date_format(Timestamp,'%H:%i') ELSE 0 END) AS 'Hour',
(CASE WHEN Timestamp>='2014-05-01' AND Timestamp<='2014-05-02'
THEN speed ELSE 0 END) AS '2014-05-01',
(CASE WHEN Timestamp>='2014-05-02' AND Timestamp<='2014-05-03'
THEN velocidad ELSE 0 END) AS '2014-05-02'
FROM `db_speed`
WHERE Timestamp>='2014-05-01' AND Timestamp<='2014-05-10

通过这个查询,我得到了这样的结构:

Hour     | 2014-05-01 | 2014-05-02

00:03:00 | 328.71 | 0
00:18:00 | 331.31 | 0
00:33:00 | 193.83 | 0
00:03:00 | 0 | 321.21
00:18:00 | 0 | 290.39
00:33:00 | 0 | 283.43

最佳答案

你很接近,你只是缺少 group by 和聚合函数。

SELECT 
(CASE WHEN Timestamp>='2014-05-01' AND Timestamp<='2014-05-03'
THEN date_format(Timestamp,'%H:%i') ELSE 0 END) AS 'Hour',
MAX((CASE WHEN Timestamp>='2014-05-01' AND Timestamp<='2014-05-02'
THEN speed ELSE NULL END)) AS '2014-05-01',
MAX((CASE WHEN Timestamp>='2014-05-02' AND Timestamp<='2014-05-03'
THEN speed ELSE NULL END)) AS '2014-05-02'
FROM `db_speed`
WHERE Timestamp>='2014-05-01' AND Timestamp<='2014-05-10'
GROUP BY `Hour`

关于mysql - 如何将一列拆分为按日期排序的多列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26909661/

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