sql两列数据快速对比(在sql中对两列数据进行运算作为新的列操作)
sql两列数据快速对比
在sql中对两列数据进行运算作为新的列操作如下所示:
select a1,a2,a1+a2 a,a1*a2 b,a1*1.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文件中就可以了。<记录一下,备忘>将来有更深入的理解之后会继续更新,谢谢大家,希望能给大家一个参考,也希望大家多多支持开心学习网。
原文链接:https://blog.csdn.net/u013703363/article/details/62893063
- 修改sqlserver数据库所有者
- php怎么修改单独一行数据(PHP实现批量修改文件名的方法示例)
- spark sql常用操作(Spark SQL数据加载和保存实例讲解)
- mysql数据库基本增删改查基本语句(MySQL表的增删改查基础教程)
- mysql url连接参数配置(浅谈Mysql连接数据库时host和user的匹配规则)
- qt和js相互调用(QT与javascript交互数据的实现)
- php读取txt乱码怎么办(解决php写入数据库乱码的问题)
- mysql利用数据库日志恢复数据(MySQL通过binlog恢复数据)
- sqlserver数据库还原教程(SQL Server通过重建方式还原master数据库)
- zabbix数据库解析(zabbix agent2 监控oracle数据库的方法)
- mysqldecimal类型数据转换(mysql decimal数据类型转换的实现)
- 怎么把数据库备份到阿里(阿里云数据库备份DBS与自建备份系统有什么优势?)
- dedecms操作手册(织梦DEDECMS结构化数据Meta申明标签)
- sqlserver分页数据重复(SQL Server 在分页获取数据的同时获取到总记录数)
- python数据结构全攻略(详解python数据结构和算法)
- dede的数据库在哪(dede后台Fatal error: Allowed memory size of 8388608 bytes exhausted问题的解决方)
- 一个30岁男人外遇失败的全过程(一个30岁男人外遇失败的全过程)
- 《无敌破坏王2》 不聊彩蛋,聊聊我从动画里看到的现实那些事儿(无敌破坏王2不聊彩蛋)
- 《寄生虫》 三观不正 人类悲欢从来不相通,感同身受也并非本能(寄生虫三观不正)
- 这部动漫中的女孩子,可比101女孩更加励志(这部动漫中的女孩子)
- 《白狐的人生》热拍 贾征宇偶像包袱难自弃 图(白狐的人生热拍)
- 七夕取消了,牛郎织女没做核酸七夕已经取消(牛郎织女没做核酸七夕已经取消)
热门推荐
- sql server作业的调度信息中各列的含义
- sql server优化性能(SQLServer地址搜索性能优化)
- thinkphp从模板自定义标签(Thinkphp5.0框架视图view的循环标签用法示例)
- .Net中Immutable(不可变)集合
- nginx怎么配置静态文件(Nginx 过滤静态资源文件的访问日志的实现)
- vue 网页打印(vue打印功能实现的两种方法总结)
- python 操作html(Python HTML解析模块HTMLParser用法分析爬虫工具)
- echarts组合柱状图(ECharts多图表联动功能的实现过程)
- css下填充代码(CSS学习笔记之常用Mixin封装实例代码)
- mysql的简单介绍(MySQL Shell的介绍以及安装)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9