SQL實(shí)現(xiàn)相鄰兩行數(shù)據(jù)的加減乘除操作
SQL實(shí)現(xiàn)表里數(shù)據(jù)按一定順序排序后,按某幾個(gè)字段分組后相鄰兩行數(shù)據(jù)實(shí)現(xiàn)加減乘除運(yùn)算。
思路:
1:先把表數(shù)據(jù)分組排序后打上序號(hào)標(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,第二列為時(shí)間ts,要求算出相同phone的每兩條相鄰數(shù)據(jù)所花費(fèi)的時(shí)間
結(jié)果如圖:
第三列的單位是秒
補(bǔ)充知識(shí):SQL實(shí)現(xiàn)當(dāng)前行等于前面兩行數(shù)據(jù)之和
sql實(shí)現(xiàn)類似斐波那契數(shù)列的功能,即當(dāng)前數(shù)據(jù)等于前面兩個(gè)數(shù)據(jù)之和,詳看本文例子
原表:
sql語句(此處要熟悉JION ON的用法)
結(jié)果
以上這篇SQL實(shí)現(xiàn)相鄰兩行數(shù)據(jù)的加減乘除操作就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
mysql中sum float類型使用小數(shù)點(diǎn)的方法
使用sum示和時(shí)如果是float類型的數(shù)據(jù)就會(huì)出現(xiàn)小數(shù)點(diǎn)了,那么要如何解決這個(gè)問題,下面介紹二種方法2013-11-11driver-class-name:?com.mysql.jdbc.Driver爆紅的問題解決
在springboot項(xiàng)目工程中想要進(jìn)行數(shù)據(jù)庫配置,driver-class-name:?com.mysql.cj.jdbc.Driver始終報(bào)錯(cuò),本文就來介紹一下如何解決,感興趣的可以了解一下2024-07-07mysql優(yōu)化的重要參數(shù) key_buffer_size table_cache
MySQL服務(wù)器端的參數(shù)有很多,但是對于大多數(shù)初學(xué)者來說,眾多的參數(shù)往往使得我們不知所措,但是哪些參數(shù)是需要我們調(diào)整的,哪些對服務(wù)器的性能影響最大呢2016-05-05MySql如何查看索引并實(shí)現(xiàn)優(yōu)化
這篇文章主要介紹了MySql如何查看索引并實(shí)現(xiàn)優(yōu)化,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-12-12