前几天同事问我一个问题,能不能用sql搞定这个问题:

我这里有一个张表table1中有time1,value1,有表table2有字段time2,value2。

现在要把table2中的value2更新到table1的value1中,要求time2距离time1最近。

一下子就想到之前学到的over partititon,但是只是学的时候操作了几个例子,一下子也没写上来。

后来找到一个教程http://blog.csdn.net/ayou2008/article/details/7179001

    1. select e.ename,
    2. e.job,
    3. e.sal,
    4. e.deptno,
    5. lead(e.sal, 1, 0) over(partition by e.deptno order by e.sal) lead_sal,
    6. lag(e.sal, 1, 0) over(partition by e.deptno order by e.sal) lag_sal,
    7. nvl(lead(e.sal) over(partition by e.deptno order by e.sal) - e.sal,
    8. 0) diff_lead_sal,
    9. nvl(e.sal - lag(e.sal) over(partition by e.deptno order by e.sal), 0) diff_lag_sal
    10. from scott.emp e;

稍微修改一下即可,diff_lead_sal, diff_lag_sal  和sal做差  两个差中找比较小的一个

请诸位试试能不能做到。

但是感觉效率很差,大家有没有好的方法啊?那哥们要离职了,根本不考虑太多,拿起我的方案就用...

利用sql的OVER()PARTITION 找到最相近的数值的更多相关文章

  1. ASP.net(C#)利用SQL Server实现注册和登陆功能

    说说我现在吧,楼主现在从事的事IT行业,主攻DotNet技术:当然这次上博客园我也是有备而来,所有再次奉献鄙人拙作,以飨诸位,望诸位不吝赐教. 世界上大多数的工作都是熟练性的工种,编程也不例外,做久了 ...

  2. 利用SQL Profiler 追踪数据库操作

    SQL Server 事件探查器 是一个界面,用于创建和管理跟踪并分析和重播跟踪结果. 这些事件保存在一个跟踪文件中,稍后试图诊断问题时,可以对该文件进行分析或用它来重播一系列特定的步骤. SQL S ...

  3. 利用SQL Server Management Studio(SSMS)复制数据库

    利用SQL Server Management Studio(SSMS)复制数据库 标签(空格分隔): SQLServer 前言 今天由于客户购买的软件版本确认了,而之前进行开发的本地数据库版本较低, ...

  4. 四、利用SQL Server 2008 R2创建自动备份计划

    (转) 本文主要利用SQL Server 2008 R2自带的"维护计划"创建一个自动备份数据的任务. 首先,启动 Sql Management studio,确保"SQ ...

  5. 利用SQL Server 2008 R2创建自动备份计划

    本文主要利用SQL Server 2008 R2自带的"维护计划"创建一个自动备份数据的任务. 首先,启动 Sql Management studio,确保"SQL Se ...

  6. 利用SQl对数据库实行数据拆分与组合

    利用SQl对数据库实行数据拆分与组合实现提供以下几种方案: 方法一: WITH CTE AS (SELECT A.Id,A.[Uid],UserName FROM (SELECT A.[id], RE ...

  7. 利用SQL注入漏洞登录后台的实现方法

    利用SQL注入漏洞登录后台的实现方法 作者: 字体:[增加 减小] 类型:转载 时间:2012-01-12我要评论 工作需要,得好好补习下关于WEB安全方面的相关知识,故撰此文,权当总结,别无它意.读 ...

  8. 利用sql批量删除表,存储过程

    利用sql批量删除表,存储过程. 最近用godaddy的空间,由于系统里面的表多,一个个的删除很麻烦,就网上搜集了一下解决方法. 给大家分享一下: 1.批量删除存储过程 declare @procNa ...

  9. 利用 SQL Monitor 查看语句运行状态步骤

    利用 SQL Monitor 查看语句运行状态步骤 1.确定语句被 SQL Monitor 监控 SQL> SELECT * FROM GV$SQL_MONITOR WHERE sql_id=' ...

随机推荐

  1. 人脸识别 1:1 和1:n

  2. 手机调试 fiddler

    使用Fiddler调试手机程序 | 前端和运维利器 2015-11-27  zhy97031  文章来源  阅 688  转 4 转藏到我的图书馆   微信分享:   作者:Uncle Chen 原文 ...

  3. centos7 增加虚拟网卡

    确认内核是否有tun模块 # modinfo tun yum install tunctl -y 如果找不到 vim /etc/yum.repos.d/nux-misc.repo [nux-misc] ...

  4. Python算法(一)冒泡排序

    3 5 1 6 2 1)第一次:找到这些数中最大的一个,并把它放最后. 3.5找到大的数放到第二个位置 5.1找到大的数放到第三个位置 5.6找到大的数放到第四个位置 2.6找到大的数放大第五个位置 ...

  5. opencv 对RGB图像直接二值化

    #include <opencv2/opencv.hpp> #include <iostream> using namespace cv; using namespace st ...

  6. crontab -e文件存放路径

    crontab -e结果存放在/var/spool/cron/crontabs中

  7. Codeforces Round #499 (Div. 2) C Fly题解

    题目 http://codeforces.com/contest/1011/problem/C Natasha is going to fly on a rocket to Mars and retu ...

  8. MyBatis数据库连接的基本使用-补充Mapper映射器

    补充 Mapper映射器的使用: Mapper映射器,google添加.Mapper映射器是将mapper.xml中配置的sql id,parameterType和resultMap按照规则一一映射到 ...

  9. jQuery 替换元素

    参考https://www.cnblogs.com/halai/p/6868027.html http://www.w3school.com.cn/jquery/manipulation_replac ...

  10. mysql数据库导出CSV乱码问题

    一.导出汉字为乱码 1. 鼠标右键点击选中的 csv 文件,在弹出的菜单中选择“编辑”,则系统会用文本方 式(记事本)打开该 csv 文件: 2. 打开 csv 文件后,进行“另存为”操作,在弹出的界 ...