SQL實現(xiàn)表里數(shù)據(jù)按一定順序排序后,按某幾個字段分組后相鄰兩行數(shù)據(jù)實現(xiàn)加減乘除運算。
思路:
1:先把表數(shù)據(jù)分組排序后打上序號標(biāo)簽
2:根據(jù)需求把標(biāo)簽字段加/減一
上代碼:
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>'';
表數(shù)據(jù)如圖:

第一列為phone,第二列為時間ts,要求算出相同phone的每兩條相鄰數(shù)據(jù)所花費的時間
結(jié)果如圖:

第三列的單位是秒
補充知識:SQL實現(xiàn)當(dāng)前行等于前面兩行數(shù)據(jù)之和
sql實現(xiàn)類似斐波那契數(shù)列的功能,即當(dāng)前數(shù)據(jù)等于前面兩個數(shù)據(jù)之和,詳看本文例子
原表:

sql語句(此處要熟悉JION ON的用法)

結(jié)果

以上這篇SQL實現(xiàn)相鄰兩行數(shù)據(jù)的加減乘除操作就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
您可能感興趣的文章:- MySql分組后隨機獲取每組一條數(shù)據(jù)的操作
- 在SQL中對同一個字段不同值,進行數(shù)據(jù)統(tǒng)計操作
- 在sql中對兩列數(shù)據(jù)進行運算作為新的列操作
- MySQL基于group_concat()函數(shù)合并多行數(shù)據(jù)
- MySQL刪除數(shù)據(jù),表文件大小依然沒變的原因