在sql中對(duì)兩列數(shù)據(jù)進(jìn)行運(yùn)算作為新的列操作
如下所示:
select a1,a2,a1+a2 a,a1*a2 b,a1*1.0/a2 c from bb_sb
把a(bǔ)表的a1,a2列相加作為新列a,把a(bǔ)1,a2相乘作為新列b,注意:
相除的時(shí)候得進(jìn)行類型轉(zhuǎn)換處理,否則結(jié)果為0.
select a.a1,b.b1,a.a1+b.b1 a from bb_sb a ,bb_cywzbrzb b
這是兩個(gè)不同表之間的列進(jìn)行運(yùn)算。
補(bǔ)充知識(shí):Sql語(yǔ)句實(shí)現(xiàn)不同記錄同一屬性列的差值計(jì)算
所使用的表的具體結(jié)構(gòu)如下圖所示

Table中主鍵是(plateNumber+currentTime)
要實(shí)現(xiàn)的查詢是:
給定車牌號(hào)和查詢的時(shí)間區(qū)間,查詢給定的時(shí)間區(qū)間內(nèi)所包含記錄的currentTime的差值,并計(jì)算AverageSpeed和該差值的乘積,求這段時(shí)間內(nèi)的最高速度(HighestSpeed),并按照type值得不同進(jìn)行劃分。–>(type值只有0和1兩個(gè)值)
主要思路是,首先能夠得出的是相同type類型下同一個(gè)車牌號(hào)(也即同一車輛)在給定的時(shí)間區(qū)間內(nèi)的currentTime的差值,比如按照currentTime排序號(hào),相鄰兩條記錄currentTime的差值,得出這個(gè)以后,其余的都可以通過(guò)聚合函數(shù)得出。
我們以車牌號(hào)為京A111111為例,設(shè)計(jì)如下圖所示的測(cè)試用例。

可以看到車牌號(hào)為京A111111的車輛總共有6條記錄,其中type為0的有兩條,type為1的有4條,
我們首先計(jì)算時(shí)間的差值,sql語(yǔ)句書(shū)寫(xiě)如下:
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
通過(guò)navicat可以看到如下圖所示的查詢結(jié)果:
通過(guò)核查timediff的值是正確的,這樣之后就可以在這個(gè)基礎(chǔ)上添加內(nèi)容了。
完整的sql語(yǔ)句如下:
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)過(guò)核對(duì),是我們想要得出的結(jié)果。之后將sql對(duì)應(yīng)替換到mybatis的mapper文件中就可以了。<記錄一下,備忘>將來(lái)有更深入的理解之后會(huì)繼續(xù)更新,謝謝大家,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Mysql中TIMESTAMPDIFF函數(shù)的語(yǔ)法與練習(xí)案例
在應(yīng)用時(shí)經(jīng)常要使用這兩個(gè)函數(shù)TIMESTAMPDIFF和TIMESTAMPADD,下面這篇文章主要給大家介紹了關(guān)于Mysql中TIMESTAMPDIFF函數(shù)的語(yǔ)法與練習(xí)案例的相關(guān)資料,需要的朋友可以參考下2022-09-09
MySQL數(shù)據(jù)表字段操作指南之添加、修改與刪除方法
這篇文章主要介紹了MySQL中使用ALTER TABLE語(yǔ)句修改數(shù)據(jù)表結(jié)構(gòu)的方法,包括添加、修改和刪除字段,通過(guò)實(shí)例演示了如何高效地管理數(shù)據(jù)表結(jié)構(gòu),需要的朋友可以參考下2024-12-12
mysql實(shí)現(xiàn)不用密碼登錄的實(shí)例方法
在本篇文章里小編給大家整理的是一篇關(guān)于mysql實(shí)現(xiàn)不用密碼登錄的實(shí)例方法,有需要的朋友們可以學(xué)習(xí)參考下。2020-08-08
mysql查詢優(yōu)化之100萬(wàn)條數(shù)據(jù)的一張表優(yōu)化方案
這篇文章主要介紹了mysql查詢優(yōu)化之100萬(wàn)條數(shù)據(jù)的一張表優(yōu)化方案,需要的朋友可以參考下2021-05-05
MySQL數(shù)據(jù)庫(kù)中如何查詢近一年的數(shù)據(jù)
最近碰到一個(gè)需求是統(tǒng)計(jì)某張表的數(shù)據(jù),統(tǒng)計(jì)時(shí)間維度為近一年,下面這篇文章主要給大家介紹了關(guān)于MySQL數(shù)據(jù)庫(kù)中如何查詢近一年的數(shù)據(jù)的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-07-07
Window環(huán)境下MySQL?UDF提權(quán)
本文章僅記錄某次內(nèi)網(wǎng)滲透過(guò)程中遇到的MySQL?采用UDF提權(quán)等方式進(jìn)行獲取權(quán)限,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧<BR>2023-03-03
MySQL從庫(kù)維護(hù)經(jīng)驗(yàn)分享
這篇文章主要介紹了MySQL從庫(kù)維護(hù)經(jīng)驗(yàn)分享,幫助大家更好的理解和使用MySQL數(shù)據(jù)庫(kù),感興趣的朋友可以了解下2020-11-11

