在sql中对两列数据进行运算作为新的列操作

作者:未来窥视者 时间:2024-01-21 13:18:45 

如下所示:

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语句实现不同记录同一属性列的差值计算

所使用的表的具体结构如下图所示

在sql中对两列数据进行运算作为新的列操作

Table中主键是(plateNumber+currentTime)

要实现的查询是:

给定车牌号和查询的时间区间,查询给定的时间区间内所包含记录的currentTime的差值,并计算AverageSpeed和该差值的乘积,求这段时间内的最高速度(HighestSpeed),并按照type值得不同进行划分。–>(type值只有0和1两个值)

主要思路是,首先能够得出的是相同type类型下同一个车牌号(也即同一车辆)在给定的时间区间内的currentTime的差值,比如按照currentTime排序号,相邻两条记录currentTime的差值,得出这个以后,其余的都可以通过聚合函数得出。

我们以车牌号为京A111111为例,设计如下图所示的测试用例。

在sql中对两列数据进行运算作为新的列操作

可以看到车牌号为京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中对两列数据进行运算作为新的列操作

经过核对,是我们想要得出的结果。之后将sql对应替换到mybatis的mapper文件中就可以了。<记录一下,备忘>将来有更深入的理解之后会继续更新,谢谢大家,希望能给大家一个参考,也希望大家多多支持脚本之家。

来源:https://blog.csdn.net/u013703363/article/details/62893063

标签:sql,数据,运算,新列
0
投稿

猜你喜欢

  • 如何使用Python对Excel表格进行拼接合并

    2021-03-15 18:01:54
  • pycharm2021激活码使用教程(永久激活亲测可用)

    2022-02-05 05:02:17
  • 使用Golang的singleflight防止缓存击穿的方法

    2024-05-22 10:12:29
  • 解析:MySQL 数据库搜索中大小写敏感性

    2009-02-23 17:32:00
  • 如何使用django的MTV开发模式返回一个网页

    2023-07-04 21:47:06
  • SQL Server数据库复制失败的原因及解决方法

    2024-01-17 20:35:50
  • pip/anaconda修改镜像源,加快python模块安装速度的操作

    2022-06-01 10:42:26
  • Python排序搜索基本算法之插入排序实例分析

    2023-12-28 14:20:25
  • Python通过zookeeper实现分布式服务代码解析

    2021-09-11 11:09:48
  • asp 判断上传文件中是否存在危险代码

    2011-03-17 11:19:00
  • 对python mayavi三维绘图的实现详解

    2022-04-29 03:17:50
  • 如何合理使用数据库冗余字段的方法

    2024-01-18 16:52:00
  • Python学习之路之pycharm的第一个项目搭建过程

    2022-01-14 23:16:52
  • Python解析m3u8拼接下载mp4视频文件的示例代码

    2022-04-22 13:20:16
  • SQL2005查询表结构的SQL语句使用分享

    2024-01-15 21:47:52
  • Python基础教程之循环语句(for、while和嵌套循环)

    2022-07-30 10:00:26
  • 详解Python中的from..import绝对导入语句

    2022-08-10 10:01:33
  • Python中非常实用的Math模块函数教程详解

    2022-12-08 02:12:49
  • Python 经典面试题 21 道【不可错过】

    2023-10-29 04:56:20
  • Python threading中lock的使用详解

    2023-01-16 08:32:26
  • asp之家 网络编程 m.aspxhome.com