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
- mysql数据库基本增删改查基本语句(MySQL表的增删改查基础教程)
- dedecms修改教程(还原dedecms数据后系统基本参数空白的解决方法)
- sqlserver 存储过程(SQL Server解析XML数据的方法详解)
- python企业微信录信息(python获取微信企业号打卡数据并生成windows计划任务)
- sqlserver实例全库备份(sql server通过脚本进行数据库压缩全备份的方法推荐)
- python 组合数据类型(详解Python3 对象组合zip和回退方式*zip)
- vue实现双向绑定原理(vue实现双向数据绑定)
- php获取数据方法(php定期拉取数据对比方法实例)
- mysqlsql按日期统计(sqlserver/mysql按天、按小时、按分钟统计连续时间段数据推荐)
- linux rsync 迁移数据(如何使用Linux的rsync)
- sqlserver数据回退(SQLServer数据库处于恢复挂起状态的解决办法)
- tomcat配置jmx监控(Tomcat配置JNDI数据源的三种方式)
- jquery无缝滚动代码(jQuery实现表格行数据滚动效果)
- mysql利用数据库日志恢复数据(MySQL通过binlog恢复数据)
- sql server2012自动备份(SQL SERVER 2012数据库自动备份的方法)
- vue双向数据绑定js如何实现(纯JS如何实现vue.js下的双向绑定功能)
- 每日一典 过江之鲫(每日一典过江之鲫)
- 红色代表什么(红色代表什么意义和象征)
- 菲律宾安全吗(菲律宾安全吗2023)
- 彩礼重要吗()
- 写信告诉我今天海是什么颜色(写信告诉我今天海是什么颜色回答)
- 英语难学吗(法语比英语难学吗)
热门推荐
- python中return 类的实例(Python实现Event回调机制的方法)
- sqlserver数据类型和长度(SqlServer 数据库 三大 范式)
- , , 的区别
- 用ILMerge合并多个DLL
- sqlserver 存储过程参数类型(详解SQL Server表和索引存储结构)
- laravel如何设置默认模块(laravel-admin 中列表筛选方法)
- Asp.net中params的使用
- html5+canvas动画(解析html5 canvas实现背景鼠标连线动态效果代码)
- docker容器基础入门认知网络篇(Docker 容器生命周期 架构 以及和VM之间的差异详解)
- mysql数据库主键选择的详解(图文详解MySQL中的主键与事务)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9