时间:2020-10-24来源:www.pcxitongcheng.com作者:电脑系统城
SQL实现表里数据按一定顺序排序后,按某几个字段分组后相邻两行数据实现加减乘除运算。
思路:
1:先把表数据分组排序后打上序号标签
2:根据需求把标签字段加/减一
上代码:
?1 2 3 4 5 6 7 8 9 10 11 12 |
select distinct a.phone,from_unixtime( cast (floor(a.ts/1000) as bigint ), 'yyyyMMdd HH:mm:ss' ),cha from table a join ( select a.phone,a.ts, abs (a.ts-b.ts)/1000 cha from ( select phone,ts,row_number() over(partition by phone order by ts ) rank from table ) a left join ( select phone,ts,rank-1 as rank from ( select phone,ts,row_number() over(partition by phone order by ts ) rank from table ) a ) b on a.phone = b.phone and a.rank = b.rank ) b on a.phone = b.phone and a.ts = b.ts where a.phone is not null and a.phone<> '' ; |
表数据如图:
第一列为phone,第二列为时间ts,要求算出相同phone的每两条相邻数据所花费的时间
结果如图:
第三列的单位是秒
补充知识:SQL实现当前行等于前面两行数据之和
sql实现类似斐波那契数列的功能,即当前数据等于前面两个数据之和,详看本文例子
原表:
sql语句(此处要熟悉JION ON的用法)
结果
以上这篇SQL实现相邻两行数据的加减乘除操作就是小编分享给大家的全部内容了,
2023-03-19
Centos 7.9安装MySQL8.0.32的详细教程2023-03-19
一步步教你利用Mysql存储过程造百万级数据2023-03-19
利用Mysql定时+存储过程创建临时表统计数据的过程问题描述:MYSQL version 5.6.8command 表结构 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 CREATE TABLE command ( ID INT NOT NULL, NAME VARCHAR(16), D...
2023-03-19
一、Galera Cluster 二、基础环境搭建 三、加入配置参数启动集群 四、 测试 五、ProxySql...
2023-03-17