如下所示:

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文件中就可以了。<记录一下,备忘>将来有更深入的理解之后会继续更新,谢谢大家,希望能给大家一个参考,也希望大家多多支持。

标签:
sql,数据运算,新列

免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com

《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线

暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。

艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。

《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。