gpt4 book ai didi

mysql - SQL,如何查找列值的变化

转载 作者:可可西里 更新时间:2023-11-01 09:03:58 25 4
gpt4 key购买 nike

我有一个包含两列的表,日期为 DateTime,值为 INT(有 3 个可能的值 1、2、3)

表格数据是这样的:

Date                     , Value
---------------------------------------
2016-01-01 10:34:00 1
2016-01-01 10:35:00 1
2016-01-01 10:36:00 1
2016-01-01 10:37:00 1
2016-01-01 10:38:00 1
2016-01-01 10:39:00 3
2016-01-01 10:40:00 3
2016-01-01 10:41:00 2
2016-01-01 10:42:00 2
2016-01-01 10:43:00 2
2016-01-01 10:44:00 1
2016-01-01 10:45:00 1
2016-01-01 10:46:00 1
2016-01-01 10:47:00 1

我需要一个 Sql 查询(特别是在 MySQL 中)来生成输出:

Start Date              ,  End Date            , value
---------------------------------
2016-01-01 10:34:00 , 2016-01-01 10:38:00 , 1
2016-01-01 10:39:00 , 2016-01-01 10:40:00 , 3
2016-01-01 10:41:00 , 2016-01-01 10:43:00 , 2
2016-01-01 10:44:00 , 2016-01-01 10:47:00 , 1

这可能吗?请帮忙。谢谢

最佳答案

最快的方法是使用变量。您需要定义一个分组参数,每次值更改时该参数都会更改:

select min(date), max(date), value
from (select t.*,
(@grp := if(@v = value, @grp,
if(@v := value, @grp + 1, @grp + 1)
)
) as grp
from t cross join
(select @grp := 0, @v := -1) params
order by date
) t
group by grp, value;

关于mysql - SQL,如何查找列值的变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34912155/

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