gpt4 book ai didi

mysql - SQL 查询 min(y) max(y) 和 X 组

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

我有一个非常简单的表,名为 MYTABLE:

TSTAMP VARCHAR(20), VALUE VARCHAR(20)

时间戳类似于 yyyy-mm-ddTHH:MM:SS.zzzZ(例如:2017-04-25T12:23:00.000Z)。值是一个 float 。

我知道这个表格模型很糟糕,但它是很多年前由其他人完成的,但他/她显然不知道他/她在做什么。

我正在尝试编写一个有效的查询来获取时间间隔内的最小值(VALUE)、最大值(VALUE)及其时间戳(例如:每分钟的最小值/最大值)。我可以通过以下查询获取最小值和最大值,但我找不到获取它们时间戳的方法。

SELECT MIN(tstamp)
, MAX(tstamp)
, MIN(value) minVal
, MAX(value) max
, ABS(TRUNCATE(((UNIX_TIMESTAMP(tstamp)*1000+SUBSTR(tstamp,-4,3)) - 1493115780000)/20000,0)) intervalNumber
, tstamp
FROM mytable
WHERE tstamp BETWEEN '2017-04-25T12:23:00.000Z' AND '2017-04-25T12:24:00.000Z'
AND NOT tstamp = '2017-04-25T12:24:00.000Z'
GROUP
BY intervalNumber;

其中 1493115780000 是以下结果:

    SELECT UNIX_TIMESTAMP('2017-04-25T12:23:00.000Z')*1000+SUBSTR('2017-04-25T12:23:00.000.000Z',-4,3);

*编辑因为我没有正确解释我得到的是每个间隔:第一个时间戳,最后一个时间戳,最小值,最大值,间隔数,第一个时间戳

我想要的是:最小值时间戳、最大值时间戳、最小值、最大值、间隔数

<小时/>

我使用的是Mysql 5.5。

如有任何帮助,我们将不胜感激:)它看起来像大学教程,但现在离我太远了:(

最佳答案

假设ABS(TRUNCATE(((UNIX_TIMESTAMP(TSTAMP)*1000+SUBSTR(TSTAMP,-4,3)) - 1493115780000)/20000,0)) as intervalNumber是正确的。

我认为您正在寻找类似的东西:

-- Min value
SELECT top 1 min(TSTAMP), VALUE,
ABS(TRUNCATE(((UNIX_TIMESTAMP(TSTAMP)*1000+SUBSTR(TSTAMP,-4,3)) - 1493115780000)/20000,0)) as intervalNumber
FROM MYTABLE
WHERE TSTAMP between '2017-04-25T12:23:00.000Z' AND '2017-04-25T12:24:00.000Z'
AND NOT TSTAMP='2017-04-25T12:24:00.000Z'
GROUP BY VALUE desc

-- Max value
SELECT top 1 max(TSTAMP), VALUE,
ABS(TRUNCATE(((UNIX_TIMESTAMP(TSTAMP)*1000+SUBSTR(TSTAMP,-4,3)) - 1493115780000)/20000,0)) as intervalNumber
FROM MYTABLE
WHERE TSTAMP between '2017-04-25T12:23:00.000Z' AND '2017-04-25T12:24:00.000Z'
AND NOT TSTAMP='2017-04-25T12:24:00.000Z'
GROUP BY VALUE asc

最好的解决方案是首先通过将所有内容转储到临时表中来清理表,使用正确的结构重新创建表,然后通过转换转储回来。之后您的请求将会变得更加简单。

关于mysql - SQL 查询 min(y) max(y) 和 X 组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43628808/

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