在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语句实现不同记录同一属性列的差值计算
所使用的表的具体结构如下图所示
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
猜你喜欢
- 前言在golang语言中,select语句 就是用来监听和channel有关的IO操作,当IO操作发生时,触发相应的case动作。有了 se
- 上下班打卡是程序员最讨厌的东西,更讨厌的是设置了连上指定wifi打卡。手机上有一些定时机器人之类的app,经过实际测试,全军覆没,没一个可以
- 目录1、字典的定义字典和列表的区别:字典的基本使用2、循环遍历3、字符串的定义4、字符串的常用操作字符串 查找和替换字符串 文本对齐演练去除
- 下面是调用方式:Example script - pymssql module (DB API 2.0) Example script -
- 前言Django处理json也是一把好手,有时候在工作中各个部门都会提供自己的相关接口,但是信息也只是单方的信息,这时候需要运维将各个部门的
- SQLyog是一款MySQL可视化工具,他可以将部分SQL操作通过图形化界面操作来完成,方便开发者更好的进行开发及数据库设计。在安装SQLy
- 下表列出了所有Python语言支持的成员运算符。 例如:试试下面的例子就明白了所有的Python编程语言提供会员运算符:#!/us
- 在许多编程语言中都包含有格式化字符串的功能,比如C和Fortran语言中的格式化输入输出。Python中内置有对字符串进行格式化的操作%。模
- 今天又帮女朋友处理了一下,她的实验数据,因为python是一年前经常用,最近找工作,用的是c,c++,python的有些东西忘记了,然后就一
- 我们可向函数传递动态参数,*args,**kwargs,首先我们来看*args,示例如下:1.show(*args)def show(*ar
- 本文实例讲述了Python爬取国外天气预报网站的方法。分享给大家供大家参考。具体如下:crawl_weather.py如下:#encodin
- 前提环境准备python3+pillow+pyautogui先提前安装好python3以及pillow和pyautogui模块这里介绍一下模
- 某些时候我们需要让类动态的添加属性或方法,比如我们在做插件时就可以采用这种方法。用一个配置文件指定需要加载的模块,可以根据业务扩展任意加入需
- python字符串-删除末位字符(rstrip)rstrip函数用于删除字符串末位指定字符,默认为空白符。语法str.rstrip([cha
- 插入视图的条件: 1.如果视图是基于一个基础表产生的,那么这就称为非连接视图,所有的非连接视图都是可以更新的,也就是说可以在该视图上进行,I
- 算法简介鸡群算法,缩写为CSO(Chicken Swarm Optimization),尽管具备所谓仿生学的背景,但实质上是粒子群算法的一个
- 读取一个已经保存了的字典f = open('dict_th','r')a = f.read()dict_hi
- 1、之前那个说淘宝交易评价“有问题”的文章已经有了一百多个评论。(某些开口就骂的评论已被删除)近期去评论的人都是从搜索引擎过来的,他们不是产
- asp压缩access数据库(带密码)方法:以下是一个类文件,下面的注解是调用类的方法 注意:如果系统不支持建立Scripting
- 一、 文件的操作1.1创建文件格式:f = open(‘文件', ‘w')或者f = open(‘文件', ‘r