Tb_People 表信息:

id     uname    era     amount    plushtime          
1000031    张亮    中年    100000    201404050908  
1000032    张亮    中年    100000    201404050913   
1000033    天天    年轻    233233    201404050918   
1000034    天天    年轻    233233    201404050923   
1000035    kimi    年轻    455631    201404050933   
1000036    kimi    年轻    455631    201404050938

--分析出每5分钟内有多少人乘车
  --时间转化秒不用转化 初始刷卡时间值是20140404090806
   UPDATE [Tb_People] SET shuacardtime=SUBSTRING(plushtime,1,4)+'-'+SUBSTRING(plushtime,5,2)+'-'+SUBSTRING(plushtime,7,2)+' '+SUBSTRING(plushtime,9,2)+':'+SUBSTRING(plushtime,11,2)

结果为:

id      uname   era    amount    plushtime           shuacardtime
1000031    张亮    中年    100000    201404050908    2014-04-05 09:08
1000032    张亮    中年    100000    201404050913    2014-04-05 09:13
1000033    天天    年轻    233233    201404050918    2014-04-05 09:18
1000034    天天    年轻    233233    201404050923    2014-04-05 09:23
1000035    kimi    年轻    455631    201404050933    2014-04-05 09:33
1000036    kimi    年轻    455631    201404050938    2014-04-05 09:38

--构造区间段
declare @dayBegin datetime,@dayEnd datetime
declare @table table(StartTime datetime,EndTime datetime)
set @dayBegin = '2014-04-05 6:00'
set @dayEnd = '2014-04-06 0:00'
while @dayBegin <=@dayEnd
begin
insert @table select @dayBegin,dateadd(mi,5,@dayBegin) --每5分钟一个间隔
set @dayBegin=dateadd(mi,5,@dayBegin)
end
select * from @table -- 执行后数据如下

StartTime                              EndTime
2014-04-05 06:00:00.000    2014-04-05 06:05:00.000
2014-04-05 06:05:00.000    2014-04-05 06:10:00.000
2014-04-05 06:10:00.000    2014-04-05 06:15:00.000
2014-04-05 06:15:00.000    2014-04-05 06:20:00.000
2014-04-05 06:20:00.000    2014-04-05 06:25:00.000

--区间段分好了,就可以想到每取出一个时间段,然后在乘车时间记录表里查询有多少条记录在该段时间内就行了,可以考虑用游标。
declare s cursor --declare 创建游标
static
for select StartTime,EndTime from @table --定义变量
declare @StartTime datetime,@EndTime datetime
declare @TempTable table(StartTime datetime,EndTime datetime,Number int) open s --打开游标
fetch next from s into @StartTime,@EndTime --提取上次提取行的下一行
while(@@fetch_status = 0)
begin
insert @TempTable select isnull(max(@StartTime),@StartTime),isnull(max(@EndTime),@EndTime), count(*) from Tb_People where shuacardtime > @StartTime and shuacardtime <=@EndTime
--这里就不能用between and了,不然分隔的时间点上车的人数会在相邻的两个区间段重复计数,另外第一班车的上车时间等于@StartTime 没有计进去,这里不影响总体分析,当然可以做个标记,读一个区间段时用between...and...就可以了
fetch next from s into @StartTime,@EndTime
end
close s --关闭游标
deallocate s --删除游标,释放资源
select * from @TempTable

执行结果如下:

StartTime                                EndTime                      Number
2014-04-05 09:05:00.000    2014-04-05 09:10:00.000    1
2014-04-05 09:10:00.000    2014-04-05 09:15:00.000    1
2014-04-05 09:15:00.000    2014-04-05 09:20:00.000    1
2014-04-05 09:20:00.000    2014-04-05 09:25:00.000    1
2014-04-05 09:25:00.000    2014-04-05 09:30:00.000    0
2014-04-05 09:30:00.000    2014-04-05 09:35:00.000    1

SQL游标操作每隔5分钟时间段数据统计信息的更多相关文章

  1. DB2输出每隔10分钟的数据

    一.输出1-100的数据 此处参考 https://bbs.csdn.net/topics/390516027 with t(id) as ( as id from sysibm.sysdummy1 ...

  2. SQL Server调优系列进阶篇 - 深入剖析统计信息

    前言 经过前几篇的分析,其实大体已经初窥到SQL Server统计信息的重要性了,所以本篇就要祭出这个神器了. 该篇内容会很长,坐好板凳,瓜子零食之类... 不废话,进正题 技术准备 数据库版本为SQ ...

  3. SQL Server 调优系列进阶篇 - 深入剖析统计信息

    前言 经过前几篇的分析,其实大体已经初窥到SQL Server统计信息的重要性了,所以本篇就要祭出这个神器了. 该篇内容会很长,坐好板凳,瓜子零食之类... 不废话,进正题 技术准备 数据库版本为SQ ...

  4. SQL Server重建索引与重组索引会更新统计信息吗?

    在SQL Server中重建索引(Rebuild Index)与重组索引(Reorganize Index)会触发统计信息更新吗? 那么我们先来测试.验证一下: 我们以AdventureWorks20 ...

  5. 基于Oracle的SQL优化(崔华著)-整理笔记-第5章“Oracle里的统计信息”

    第5章“Oracle里的统计信息” 详细介绍了Oracle数据库里与统计信息相关的各个方面的内容,包括 Oracle数据库中各种统计信息的分类.含义.收集和查看方法,以及如何在Oracle数据库里正确 ...

  6. MS SQL 统计信息浅析上篇

    统计信息概念 统计信息是一些对象,这些对象包含在表或索引视图中一列或多列中的数据分布有关的统计信息.数据库查询优化器使用这些统计信息来估计查询结果中的基数或行数. 通过这些基数估计,查询优化器可以生成 ...

  7. SQL Server调优系列进阶篇(深入剖析统计信息)

    前言 经过前几篇的分析,其实大体已经初窥到SQL Server统计信息的重要性了,所以本篇就要祭出这个神器了. 该篇内容会很长,坐好板凳,瓜子零食之类... 不废话,进正题 技术准备 数据库版本为SQ ...

  8. SQL语句调优 - 统计信息的含义与作用及维护计算

    统计信息的含义与作用                                                                                          ...

  9. SQL Server-深入剖析统计信息

    转自: http://www.cnblogs.com/zhijianliutang/p/4190669.html   概念理解 关于SQL Server中的统计信息,在联机丛书中是这样解释的 查询优化 ...

随机推荐

  1. java统计abacbacdadbc中的每个字母出现的次数,输出格式是:a(4)b(3)c(3)d(2)

    import java.util.Iterator; import java.util.Map; import java.util.Set; import java.util.TreeMap; /* ...

  2. cordova 常用插件

    一,插件相关常用命令   1,查看所有已经安装的插件 1 cordova plugin ls 2,安装插件(以camera插件为例) 1 cordova plugin add cordova-plug ...

  3. sqlserver profiler 抓出来作业的代码 SQLAgent - TSQL JobStep,二进制作业名字转化为字段串作业名字,job_id

    sqlserver 中 profiler 抓出来不少是作业中的代码,applicationname 类似于 SQLAgent - TSQL JobStep (Job 0x94B9B5C016E8D94 ...

  4. 减小App包的大小

    检查.ipa文件 首先获得app的ipa文件. 将ipa文件的后缀改为.zip,解压得到包内容. 查看资源文件哪个最大.然后试着对最大的文件即可处理 图片 尽量使用8-bit图片 使用8-bit的PN ...

  5. spring cloud单点登录

    概述 基于springcloud的单点登录服务及基于zuul的网关服务(解决了通过zuul转发到认证服务之后session丢失问题) 详细 代码下载:http://www.demodashi.com/ ...

  6. vim+xdebug调试PHP

    一.安装xdebug 1.编译安装xdebug,也可以使用pecl install xdebug wget http://xdebug.org/files/xdebug-2.3.2.tgz tar - ...

  7. 基于docker的centos:latest镜像制作nginx的镜像

    Dockerfile和nginx.repo在同一目录下 先创建nginx.repo [root@localhost nginx]# cat nginx.repo [nginx] name=nginx ...

  8. 如何在cmd命令行中查看、修改、删除与添加环境变量,语法格式例子:set path;echo %APPDATA%

    如何在cmd命令行中查看.修改.删除与添加环境变量 首先明确一点: 所有的在cmd命令行下对环境变量的修改只对当前窗口有效,不是永久性的修改.也就是说当关闭此cmd命令行窗口后,将不再起作用.永久性修 ...

  9. Java虚拟机学习 - JDK可视化监控工具 ( 7 )

    1.JConsole JConsole工具在JDK/bin目录下,启动JConsole后,将自动搜索本机运行的jvm进程,不需要jps命令来查询指定.双击其中一个jvm进程即可开始监控,也可使用“远程 ...

  10. jsp里面实现asp.net的Global文件内容。

    Global.java文件: import javax.servlet.ServletContext; import javax.servlet.ServletContextEvent; import ...