求助数据过滤

caoqinghua 2016-05-12 04:39:53
数据格式

序号 时间列 数据列
4 2015-07-19 18:34:11 0.27
5 2015-07-19 18:34:16 0.27
6 2015-07-19 18:34:21 0.27
7 2015-07-19 18:34:26 0.28
8 2015-07-19 18:34:31 0.28
9 2015-07-19 18:34:36 0.28
10 2015-07-19 18:34:41 0.29
11 2015-07-19 18:34:46 0.29

想要取得的格式

序号 时间列 数据列 持续时间(秒)
4 2015-07-19 18:34:11 0.27 15秒
7 2015-07-19 18:34:26 0.28 15秒
10 2015-07-19 18:34:41 0.29 5秒

哪位兄弟知道这么怎么查询啊
...全文
117 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
caoqinghua 2016-05-13
  • 打赏
  • 举报
回复
我做了测试,但是结果好像不对,下面是测试数据

表结构:
CREATE TABLE `xr_1018` (
`uid` BIGINT(20) NOT NULL,
`ot` DATETIME NOT NULL,
`1` DOUBLE NOT NULL DEFAULT '0',
`2` DOUBLE NOT NULL DEFAULT '0',
`3` DOUBLE NOT NULL DEFAULT '0',
`4` DOUBLE NOT NULL DEFAULT '0',
PRIMARY KEY (`uid`)
)
COLLATE='utf8_general_ci'
ENGINE=MyISAM;

测试数据:

INSERT INTO `xr_1018` (`uid`, `ot`, `1`, `2`, `3`, `4`) VALUES (1, '2015-07-19 18:33:56', 0, 0, 0, 0.27);
INSERT INTO `xr_1018` (`uid`, `ot`, `1`, `2`, `3`, `4`) VALUES (2, '2015-07-19 18:34:01', 0, 0, 0, 0.27);
INSERT INTO `xr_1018` (`uid`, `ot`, `1`, `2`, `3`, `4`) VALUES (3, '2015-07-19 18:34:07', 0, 0, 0, 0.27);
INSERT INTO `xr_1018` (`uid`, `ot`, `1`, `2`, `3`, `4`) VALUES (4, '2015-07-19 18:34:11', 0, 0, 0, 0.27);
INSERT INTO `xr_1018` (`uid`, `ot`, `1`, `2`, `3`, `4`) VALUES (5, '2015-07-19 18:34:16', 0, 0, 0, 0.27);
INSERT INTO `xr_1018` (`uid`, `ot`, `1`, `2`, `3`, `4`) VALUES (6, '2015-07-19 18:34:21', 0, 0, 0, 0.27);
INSERT INTO `xr_1018` (`uid`, `ot`, `1`, `2`, `3`, `4`) VALUES (7, '2015-07-19 18:34:26', 0, 0, 0, 0.28);
INSERT INTO `xr_1018` (`uid`, `ot`, `1`, `2`, `3`, `4`) VALUES (8, '2015-07-19 18:34:31', 0, 0, 0, 0.28);
INSERT INTO `xr_1018` (`uid`, `ot`, `1`, `2`, `3`, `4`) VALUES (9, '2015-07-19 18:34:36', 0, 0, 0, 0.28);
INSERT INTO `xr_1018` (`uid`, `ot`, `1`, `2`, `3`, `4`) VALUES (10, '2015-07-19 18:34:41', 0, 0, 0, 0.28);
INSERT INTO `xr_1018` (`uid`, `ot`, `1`, `2`, `3`, `4`) VALUES (11, '2015-07-19 18:34:46', 0, 0, 0, 0.28);
INSERT INTO `xr_1018` (`uid`, `ot`, `1`, `2`, `3`, `4`) VALUES (12, '2015-07-19 18:34:51', 0, 0, 0, 0.27);
INSERT INTO `xr_1018` (`uid`, `ot`, `1`, `2`, `3`, `4`) VALUES (13, '2015-07-19 18:34:56', 0, 0, 0, 0.27);
INSERT INTO `xr_1018` (`uid`, `ot`, `1`, `2`, `3`, `4`) VALUES (14, '2015-07-19 18:35:01', 0, 0, 0, 0.28);
INSERT INTO `xr_1018` (`uid`, `ot`, `1`, `2`, `3`, `4`) VALUES (15, '2015-07-19 18:35:06', 0, 0, 0, 0.28);
INSERT INTO `xr_1018` (`uid`, `ot`, `1`, `2`, `3`, `4`) VALUES (16, '2015-07-19 18:35:11', 0, 0, 0, 0.28);
INSERT INTO `xr_1018` (`uid`, `ot`, `1`, `2`, `3`, `4`) VALUES (17, '2015-07-19 18:35:16', 0, 0, 0, 0.28);
INSERT INTO `xr_1018` (`uid`, `ot`, `1`, `2`, `3`, `4`) VALUES (18, '2015-07-19 18:35:21', 0, 0, 0, 0.28);


查询语句:

select *,(select min(ot) from xr_1018 b where b.ot>a.ot and b.`4`!=a.`4` )-a.ot as 持续时间
from (
select min(uid),min(ot) as ot,`4`
from xr_1018
group by `4`
) a;



caoqinghua 2016-05-13
  • 打赏
  • 举报
回复
已经解决了.结贴
caoqinghua 2016-05-13
  • 打赏
  • 举报
回复
顶顶顶顶顶顶
ACMAIN_CHM 2016-05-13
  • 打赏
  • 举报
回复
大概下面这个思路
引用
select * , (select min(时间列) from 数据格式 where 时间列>a.时间列 and 数据列!=a.数据列)-a.时间列 as 持续时间 from ( select min(序号),min(时间列) as 时间列,数据列 from 数据格式 gruop by 数据列 ) a
caoqinghua 2016-05-13
  • 打赏
  • 举报
回复
ACMAIN_CHM 2016-05-12
  • 打赏
  • 举报
回复
建议描述一下运算逻辑。 4 2015-07-19 18:34:11 0.27 15秒 这一行是如何取出来的?

56,675

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧