如下所示:
select a1,a2,a1+a2 a,a1*a2 b,a1*1.0/a2 c from bb_sb
把a表的a1,a2列相加作為新列a,把a1,a2相乘作為新列b,注意:
相除的時候得進行類型轉(zhuǎn)換處理,否則結(jié)果為0.
select a.a1,b.b1,a.a1+b.b1 a from bb_sb a ,bb_cywzbrzb b
這是兩個不同表之間的列進行運算。
補充知識:Sql語句實現(xiàn)不同記錄同一屬性列的差值計算
所使用的表的具體結(jié)構(gòu)如下圖所示
Table中主鍵是(plateNumber+currentTime)
要實現(xiàn)的查詢是:
給定車牌號和查詢的時間區(qū)間,查詢給定的時間區(qū)間內(nèi)所包含記錄的currentTime的差值,并計算AverageSpeed和該差值的乘積,求這段時間內(nèi)的最高速度(HighestSpeed),并按照type值得不同進行劃分。–>(type值只有0和1兩個值)
主要思路是,首先能夠得出的是相同type類型下同一個車牌號(也即同一車輛)在給定的時間區(qū)間內(nèi)的currentTime的差值,比如按照currentTime排序號,相鄰兩條記錄currentTime的差值,得出這個以后,其余的都可以通過聚合函數(shù)得出。
我們以車牌號為京A111111為例,設(shè)計如下圖所示的測試用例。
可以看到車牌號為京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可以看到如下圖所示的查詢結(jié)果:
通過核查timediff的值是正確的,這樣之后就可以在這個基礎(chǔ)上添加內(nèi)容了。
完整的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
顯示結(jié)果如下:
經(jīng)過核對,是我們想要得出的結(jié)果。之后將sql對應(yīng)替換到mybatis的mapper文件中就可以了。記錄一下,備忘>將來有更深入的理解之后會繼續(xù)更新,謝謝大家,希望能給大家一個參考,也希望大家多多支持腳本之家。
您可能感興趣的文章:- mysql批量更新多條記錄的同一個字段為不同值的方法
- MySQL根據(jù)某一個或者多個字段查找重復(fù)數(shù)據(jù)的sql語句
- MySQL計算兩個日期相差的天數(shù)、月數(shù)、年數(shù)