Sql語句實現不同記錄同一屬性列的差值計算
所使用的表的具體結構如下圖所示
Table中主鍵是(plateNumber+currentTime
)
要實現的查詢是:
給定車牌號和查詢的時間區間,查詢給定的時間區間內所包含記錄的currentTime
的差值,並計算AverageSpeed
和該差值的乘積,求這段時間內的最高速度(HighestSpeed
),並按照type
值得不同進行劃分。–>(type
值只有0和1兩個值)
主要思路是,首先能夠得出的是相同type型別下同一個車牌號(也即同一車輛)在給定的時間區間內的currentTime
的差值,比如按照currentTime
排序號,相鄰兩條記錄currentTime
的差值,得出這個以後,其餘的都可以通過聚合函式得出。
我們以車牌號為京A111111為例,設計如下圖所示的測試用例。
可以看到車牌號為京A111111
的車輛總共有6條記錄,其中type
為0的有兩條,type
為1的有4條,
我們首先計算時間的差值,sql語句書寫如下:
SELECT a.platenumber,
a.currenttime,
a.type,
a.averagespeed,
a.highestspeed,
currenttime - (SELECT currenttime
FROM carmultispeedinfo
WHERE platenumber = a.platenumber
AND type = a.type
AND currenttime < a.currenttime
ORDER BY currenttime DESC
LIMIT 1)AS timediff
FROM carmultispeedinfo a
通過navicat
可以看到如下圖所示的查詢結果:
通過核查timediff
的值是正確的,這樣之後就可以在這個基礎上新增內容了。
完整的sql語句如下:
SELECT Sum(aa.averagespeed * aa.timediff) AS milesdiff,
Max(aa.highestspeed) AS HighestSpeed,
Sum(aa.timediff) AS timediff,
aa.type
FROM (SELECT a.platenumber,
a.currenttime,
a.type,
a.averagespeed,
a.highestspeed,
currenttime - (SELECT currenttime
FROM carmultispeedinfo
WHERE platenumber = a.platenumber
AND type = a.type
AND currenttime < a.currenttime
ORDER BY currenttime DESC
LIMIT 1) AS timediff
FROM carmultispeedinfo a)aa
WHERE aa.platenumber = '京A111111'
AND aa.currenttime >= 1521790124670
AND aa.currenttime <= 1521790125685
GROUP BY aa.type
顯示結果如下:
經過核對,是我們想要得出的結果。之後將sql
對應替換到mybatis
的mapper
檔案中就可以了。<記錄一下,備忘>將來有更深入的理解之後會繼續更新,謝謝大家。
相關文章
- jsqlparser使用記錄---生成sql語句JSSQL
- MySQL 記錄所有執行了的 sql 語句MySql
- [20211009]使用bash計算sql語句的sql_id.txtSQL
- 如何用redux實現computed計算屬性Redux
- [20191101]通過zsh計算sql語句的sql_id.txtSQL
- [20191011]通過bash計算sql語句的sql_id.txtSQL
- 屬性動畫與差值器動畫
- vue計算屬性和vue實力的屬性和方法Vue
- 3. Vue語法--計算屬性Vue
- 使用SQL語句去掉重複記錄的兩種方法SQL
- [20230329]記錄除錯sql語句遇到的問題.txt除錯SQL
- [20220111]該語句的sql_id如何計算的.txtSQL
- 記一個實用的sql查詢語句SQL
- 計算屬性
- MyBatis標籤實現的動態SQL語句MyBatisSQL
- Vue的計算屬性Vue
- Vue筆記三——計算屬性(computed)Vue筆記
- flutter 屬性記錄Flutter
- Vue原始碼學習(十七):實現computed計算屬性Vue原始碼
- 統計介面sql語句SQL
- Oracle執行語句跟蹤 使用sql trace實現語句追蹤OracleSQL
- Oracle行轉列、列轉行的Sql語句總結OracleSQL
- echarts常用屬性記錄Echarts
- java-Mybatis 註解方式實現sql語句JavaMyBatisSQL
- Mybatis 裡對映檔案的動態 SQL 語句,實現if,where,foreache的SQL語句動態拼接查詢MyBatisSQL
- vue 基礎入門筆記 19:計算屬性和偵聽屬性Vue筆記
- PostgreSQL/Lightdb 更改列屬性語法SQL
- Java中如何解析SQL語句、格式化SQL語句、生成SQL語句?JavaSQL
- SQL語句SQL
- SQL語句IN的用法SQL
- 使用DataSource-Proxy在Spring Boot中記錄SQL語句 - Vlad MihalceaSpring BootSQL
- 統計報表 -- sql統計語句SQL
- 自定義註解例項實現SQL語句生成SQL
- sql語句的程式設計手冊(轉)SQL程式設計
- mysql快速新增百萬條記錄的語句MySql
- vue3計算屬性的可寫屬性 set 與 getVue
- Vue 計算屬性與方法Vue
- Vue(5)計算屬性computedVue