在sql中对两列数据进行运算作为新的列操作
如下所示
select a1,a2,a1+a2 a,a1a2 b,a11.0/a2 c from bb_sb
把a表的a1,a2列相加作为新列a,把a1,a2相乘作为新列b,注意
相除的时候得进行类型转换处理,否则结果为0.
select a.a1,b.b1,a.a1+b.b1 a from bb_sb a ,bb_cywzbrzb b
这是两个不同表之间的列进行运算。
补充知识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文件中就可以了。<记录一下,备忘>将来有更深入的理解之后会继续更新,谢谢大家,希望能给大家一个参考,也希望大家多多支持狼蚁SEO。
编程语言
- 甘肃哪有关键词排名优化购买方式有哪些
- 甘肃SEO如何做网站优化
- 河南seo关键词优化怎么做电话营销
- 北京SEO优化如何做QQ群营销
- 来宾百度关键词排名:提升您网站曝光率的关键
- 卢龙关键词优化:提升您网站排名的策略与技巧
- 山东网站优化的注意事项有哪些
- 四川整站优化怎样提升在搜索引擎中的排名
- 疏附整站优化:提升网站性能与用户体验的全新
- 海南seo主要做什么工作售后服务要做到哪些
- 荣昌百度网站优化:提升您网站的搜索引擎排名
- 河北seo网站排名关键词优化如何做SEO
- 江西优化关键词排名推广售后保障一般有哪些
- 古浪SEO优化:提升你的网站可见性
- 西藏网站排名优化怎么把网站排名在百度首页
- 如何提升阳东百度快照排名:详尽指南