怎样在一个时间段内记录,只取最早的一条记录?

原创 2006年05月19日 16:02:00

表:

工号        日期
--------------------------------
12006-03-15 08:00:40.000
12006-03-15 18:10:35.000
12006-03-15 18:10:36.000
22006-03-15 07:54:45.000
22006-03-15 18:10:03.000
32006-03-15 07:59:46.000
32006-03-15 07:59:47.000
32006-03-15 19:15:30.000
42006-03-15 08:03:47.000
42006-03-15 19:41:08.000
52006-03-15 19:41:09.000

结果(同一工号日期在5分钟范围内的记录,只取最早的一条记录):
工号        日期
---------------------------------
12006-03-15 08:00:40.000
12006-03-15 18:10:35.000
22006-03-15 07:54:45.000
22006-03-15 18:10:03.000
32006-03-15 07:59:46.000
32006-03-15 19:15:30.000
42006-03-15 08:03:47.000
42006-03-15 19:41:08.000
52006-03-15 19:41:09.000

declare @tbl table (工号 int,日期 datetime)
insert into @tbl
select 1,'2006-03-15 08:00:40.000'
union select 1,'2006-03-15 18:10:35.000'
union select 1,'2006-03-15 18:10:36.000'
union select 2,'2006-03-15 07:54:45.000'
union select 2,'2006-03-15 18:10:03.000'
union select 3,'2006-03-15 07:59:46.000'
union select 3,'2006-03-15 07:59:47.000'
union select 3,'2006-03-15 19:15:30.000'
union select 4,'2006-03-15 08:03:47.000'
union select 4,'2006-03-15 19:41:08.000'
union select 5,'2006-03-15 19:41:09.000'

select * from @tbl as a
where not exists(
  select * from @tbl where 工号=a.工号 and
     abs(datediff(Second,日期,a.日期))<=300 and a.日期<日期)

declare @tbl table (工号 int,日期 datetime)
insert into @tbl
      select 1,'2006-03-15 08:00:40.000'
union select 1,'2006-03-15 18:10:35.000'
union select 1,'2006-03-15 18:10:36.000'
union select 2,'2006-03-15 07:54:45.000'
union select 2,'2006-03-15 18:10:03.000'
union select 3,'2006-03-15 07:59:46.000'
union select 3,'2006-03-15 07:59:47.000'
union select 3,'2006-03-15 19:15:30.000'
union select 4,'2006-03-15 08:03:47.000'
union select 4,'2006-03-15 19:41:08.000'
union select 5,'2006-03-15 19:41:09.000'

select distinct a.*
from
    @tbl a
where
    not exists(select
                   1
               from
                   @tbl
               where
                   工号=a.工号
                   and
                   (datediff(ss,日期,a.日期) between 1 and 300))

 

 

在mysql 中查询时间最大的一条记录

在项目中需要查询订单最后操作的一条记录 的money 直接写  select max(create_time) ,order_id,money  from goods  group by order...
  • z13615480737
  • z13615480737
  • 2016年08月12日 15:53
  • 8534

mysql导入打卡记录,查询员工每天最早上班时间和最晚下班时间

1、在数据库新建表card_records,根据打卡记录字段新建表的字段,新增id字段(自增) 2、利用navicat连接mysql数据库,导入打卡记录 右键新建的表,右键导入向导,选择导入的文件...
  • gywtzh0889
  • gywtzh0889
  • 2016年11月24日 10:26
  • 1321

[Mysql]从表中随机取出一条数据sql

这是前一段时间做一个需求的调研,需求就是很快的从mysql一张表中随机取出一条数据,...
  • lzz957748332
  • lzz957748332
  • 2014年10月19日 21:05
  • 1943

group by分组后获得每组中时间最大的那条记录

用途: GROUP BY 语句用于 根据一个或多个列对结果集进行分组。 例子: 原表: 现在,我们希望根据USER_ID 字段进行分组,那么,可使用 GROUP BY 语句。 ...
  • u012660464
  • u012660464
  • 2017年11月22日 16:53
  • 448

SQL:多表关联取最大日期的那条记录

作者:iamlasong 1、需求 两个表,投递记录表和封发开拆记录表,现在想知道投递日期距最后一次封发日期天数分布情况。 对这个需求,需要先查询出投递明细,同时要知道对应的邮件最后一次封发情况...
  • iamlaosong
  • iamlaosong
  • 2014年07月23日 16:07
  • 7924

项目管理中通过CPM算法求关键路径,最早和最晚开始时间

首先贴一下百度百科对CPM的定义:关键路径法(Critical Path Method, CPM)是一种基于数学计算的项目计划管理方法,是网络图计划方法的一种,属于肯定型的网络图。关键路径法将项目分解...
  • WonphangNew
  • WonphangNew
  • 2015年12月30日 12:59
  • 4200

在mysql中使用group by和order by取每个分组中日期最大一行数据

在mysql中使用group by进行分组后取某一列的最大值,我们可以直接使用MAX()函数来实现,但是如果我们要取最大值对应的ID,那么我们需要取得整行的数据。最开始的实现方法如下SELECT t....
  • shiyong1949
  • shiyong1949
  • 2017年11月08日 20:15
  • 361

AOE网络的算法,活动的最早开始时间,最晚结束时间,关键活动,关键路径

AOE网络的关键活动计算,进而得到关键路径
  • cmdssd1
  • cmdssd1
  • 2016年06月30日 12:07
  • 6348

最早截止时间优先即EDF算法

1. 最早截止时间优先EDF(Earliest DeadlineFirst)算法是非常著名的实时调度算法之一。在每一个新的就绪状态,调度器都是从那些已就绪但还没有完全处理完毕的任务中选择最早截止时间的...
  • minyuanxiani
  • minyuanxiani
  • 2014年05月12日 16:40
  • 4224

从mysql中查最后一条记录

select   *   from   table   order   by   id   desc   limit   1 MySql : SELECT * FROM 表名 ORDER BY ...
  • superit401
  • superit401
  • 2015年11月12日 12:36
  • 38040
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:怎样在一个时间段内记录,只取最早的一条记录?
举报原因:
原因补充:

(最多只允许输入30个字)