sql 依据时间间隔分组,获取第一条数据
时序数据的数据量比较大,抛去异常点外,变化相对比较有线性规律,业务上需要对结果进行抽取显示。
原始数据时序标签(部分示例)
根据时间字段,计算时间字段和指定时间的时间戳差值,然后除以固定间隔(示例中间隔为5分钟),作为分组字段,然后分组获取第一个输出
select date,dd from (
select date,
floor(
(
unix_timestamp(date)-(select unix_timestamp(date) from test where date=(select min(date) from test))
)
/300
) as dd
from test
) b
group by b.dd
输出结果
插入100w测试数据,生成随机时间戳,其他字段就随意了
CREATE DEFINER=`root`@`localhost` PROCEDURE `testdata`()
BEGIN
declare i INT default 0;
while i <1000000 do
insert into test values (4100000406,1,concat('2013-10-01 ', floor(10+rand()*10),':',floor(10+rand()*49),':',floor(10+rand()*49)));
set i = i+1;
end while;
END;
使用的数据库是mysql,数据结构相对简单,算上时间字段共有三个字段,10w数据执行耗时0.17s,100w数据执行耗时1.7s,因为都是全表扫描,所以数据压力还是比较大。
sql 依据时间间隔分组,获取第一条数据的更多相关文章
- sql分组取第一条数据
sq分组取第一条数据的一个方法: select * from ( select row_number() over(partition by ID order by ID) as rownum , * ...
- postgresql分组后获取第一条数据
-- 根据编号分组取第一条数据 select * from table t where t.no=(select max(no) from table t1 where t1.no=t.no) -- ...
- oracle 根据字段分组取第一条数据及rank函数说明
当前有这样一个需求,根据外键对子表数据进行分组,取每组中的一条数据就行了,如图: 如:COMMANDID = 26的有两条,只取一条数据. sql语句: select * from(select SY ...
- LINQ分组取出第一条数据
Person1: Id=, Name="Test1" Person2: Id=, Name="Test1" Person3: Id=, Name="T ...
- Oracle分组取第一条数据
看看曾经的私密日志.原来自己之前被非常多小而简单的问题困惑过. 看着那时候我们还是新手中的新手做的备忘笔记! 事实上就是用了Oracle的统计函数而已! 曾经的日记(看样子应该是曾经公司的源代码,呵呵 ...
- sql分组获取第一条记录(sql+oracle)
sql版本 select * from (select t.CloseDate,t.ExpiryDate,t.DataTypeLookupID,ROW_NUMBER() over(partition ...
- sql分组获取第一条或者最小一条值
很多人都在问这个问题,现在记录一下 select id from test as a where id = (select min(b.id ) from test as b where a.pid ...
- Laravel 5.6 模型关联 user 表后查询 user 表数据只能获取第一条数据,不知道怎么获取第二条
按照开发手册的说法,肯定是指令不够全,附代码图 如果, tests 是文章表, users 是用户表 test.com/tests/1 是 id 为 1 的文章地址( get 访问) 假如 Tests ...
- mssql sqlserver 使用sql脚本获取群组后,按时间排序(asc)第一条数据的方法分享
摘要: 下文讲述使用sql脚本,获取群组后记录的第一条数据业务场景说明: 学校教务处要求统计: 每次作业,最早提交的学生名单下文通过举例的方式,记录此次脚本编写方法,方便以后备查,如下所示: 实现思路 ...
- oracle分组取每组第一条数据
oracle分组后取每组第一条数据 '数据格式 分组取第一条的效果 [sql] SELECT * FROM (SELECT ROW_NUMBER() OVER(PARTITION BY ...
随机推荐
- 控制请求并发数量:p-limit 源码解读
p-limit 是一个控制请求并发数量的库,他的整体代码不多,思路挺好的,很有学习价值: 举例 当我们同时发起多个请求时,一般是这样做的 Promise.all([ requestFn1, reque ...
- 离线安装Redis
redis 直接去官网下载tar包就可以 主要是gcc 环境的安装包不太好找,我下载的还缺少 make 如果服务器比较干净,还得预装一下lrzsz-0.12.20.tar.gz 上传下载文件,unzi ...
- 25. Socket与粘包问题
1. Socket概念 Socket允许应用程序通过它发送或接收数据,对其进行像对文件一样的打开.读写和关闭等操作,从而允许应用程序将I/O插入到网络中,并与网络中的其他应用程序进行通信.Socket ...
- 一个SMMU内存访问异常的问题
最近碰到棘手的问题: 以太网进行iperf测试时, 发生了SMMU (System Memory Management Unit)访问异常导致内核崩溃. 原本只是内部测试发现, 后面在试验车上也概率性 ...
- iOS中委托使用小结
1.声明委托对象,并根据需要设置方法为可选还是必选,默认设置可选@optional @protocol CCHighSeasPoolDistributeDelegate <NSObject> ...
- C#中的原始字符串
// 原始字符串使用 三个引号(至少三对)包裹,ps: 引号单独占用一行 // 原始字符串使用变量需要加两个 $$"""{变量}""" st ...
- yarn 和 npm 不能混合使用
当有 yarn.lock 的时候说明项目使用的yarn 创建的 则后面的都要使用 yarn 操作,比如下载 包 等 : 当项目没有 yarn.lock 而是 package.json.lock 说明项 ...
- kotlin协程——>共享的可变状态与并发
共享的可变状态与并发 协程可⽤多线程调度器(⽐如默认的 Dispatchers.Default)并发执⾏.这样就可以提出所有常⻅的并发 问题.主要的问题是同步访问共享的可变状态.协程领域对这个问题的⼀ ...
- Linux命令netstat查看端口使用方法
[redis@fgedu180 ~]$ netstat -an|grep 6379 tcp 0 0 192.168.4.180:6379 0.0.0.0:* LISTEN
- 《使用Gin框架构建分布式应用》阅读笔记:p108-p126
<用Gin框架构建分布式应用>学习第8天,p108-p126总结,总计18页. 一.技术总结 1.Redis eviction policy (1)什么是 eviction policy? ...