SQL游标操作每隔5分钟时间段数据统计信息
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分钟时间段数据统计信息的更多相关文章
- DB2输出每隔10分钟的数据
一.输出1-100的数据 此处参考 https://bbs.csdn.net/topics/390516027 with t(id) as ( as id from sysibm.sysdummy1 ...
- SQL Server调优系列进阶篇 - 深入剖析统计信息
前言 经过前几篇的分析,其实大体已经初窥到SQL Server统计信息的重要性了,所以本篇就要祭出这个神器了. 该篇内容会很长,坐好板凳,瓜子零食之类... 不废话,进正题 技术准备 数据库版本为SQ ...
- SQL Server 调优系列进阶篇 - 深入剖析统计信息
前言 经过前几篇的分析,其实大体已经初窥到SQL Server统计信息的重要性了,所以本篇就要祭出这个神器了. 该篇内容会很长,坐好板凳,瓜子零食之类... 不废话,进正题 技术准备 数据库版本为SQ ...
- SQL Server重建索引与重组索引会更新统计信息吗?
在SQL Server中重建索引(Rebuild Index)与重组索引(Reorganize Index)会触发统计信息更新吗? 那么我们先来测试.验证一下: 我们以AdventureWorks20 ...
- 基于Oracle的SQL优化(崔华著)-整理笔记-第5章“Oracle里的统计信息”
第5章“Oracle里的统计信息” 详细介绍了Oracle数据库里与统计信息相关的各个方面的内容,包括 Oracle数据库中各种统计信息的分类.含义.收集和查看方法,以及如何在Oracle数据库里正确 ...
- MS SQL 统计信息浅析上篇
统计信息概念 统计信息是一些对象,这些对象包含在表或索引视图中一列或多列中的数据分布有关的统计信息.数据库查询优化器使用这些统计信息来估计查询结果中的基数或行数. 通过这些基数估计,查询优化器可以生成 ...
- SQL Server调优系列进阶篇(深入剖析统计信息)
前言 经过前几篇的分析,其实大体已经初窥到SQL Server统计信息的重要性了,所以本篇就要祭出这个神器了. 该篇内容会很长,坐好板凳,瓜子零食之类... 不废话,进正题 技术准备 数据库版本为SQ ...
- SQL语句调优 - 统计信息的含义与作用及维护计算
统计信息的含义与作用 ...
- SQL Server-深入剖析统计信息
转自: http://www.cnblogs.com/zhijianliutang/p/4190669.html 概念理解 关于SQL Server中的统计信息,在联机丛书中是这样解释的 查询优化 ...
随机推荐
- JavaScript简述一
一.什么时JavaScript JavaScript是一种具有面向对象能力的,解释型的设计语言,更具体一点,它是基于圣明和事件驱动并具有相对安全必的客户端脚本语言,因为它不需要在一个语言环境下运行,只 ...
- Codeforces Round #228 (Div. 1) C 贪心
嘎嘎,今天被一些事耽误了,可是还是A了几个题目,这道题还不错 题目链接: 题意:两个人玩游戏,有N堆纸牌,纸牌上有数字,A每次仅仅能取N堆中的 当中一个的顶部的 纸牌,B仅仅能取N堆中的当中一个底部 ...
- iOS开发 - 获取真机沙盒数据
今天要获取之前真机測试时写入沙盒的数据, 本来以为挺麻烦的. 后来捣腾了一下, 才知道原来这么简单... 以下直接看详细步骤. 前提: 真机已经通过USB和你的电脑连接上了! 1.进入Organize ...
- 【Docker】安装tomcat并部署应用
安装tomcat 1.拉取tomcat镜像 docker pull docker.io/tomcat 查看镜像 docker images 2.启动tomcat 首先添加8090端口:firewall ...
- SQL Union作用
动态构造一个SQL语句然后执行,构造动态语句的查询语句如下 SELECT REPLACE(WMSYS.WM_CONCAT(STR),',',' UNION ') FROM (SELECT 'SELEC ...
- QQ概念版(WPF制作)
984 QQ概念版 编辑 QQ 概念版是腾讯首款NUI(自然用户交互)产品,全面实现了多点触摸操作.是腾讯利用微软最新一代的客户端展现层技术--WPF,打造的IM产品. 中文名 QQ 概念版 游戏 ...
- TCP Socket 粘包
这两天看csdn有一些关于socket粘包,socket缓冲区设置的问题.发现自己不是非常清楚,所以查资料了解记录一下: 一两个简单概念长连接与短连接: 1.长连接 Client方与Server ...
- Python处理JSON(转)
参考: 概念 序列化(Serialization):将对象的状态信息转换为可以存储或可以通过网络传输的过程,传输的格式可以是JSON.XML等.反序列化就是从存储区域(JSON,XML)读取反序列化对 ...
- Oracle JDBC配置
Oracle数据库是收费的,Oracle的JDBC驱动在Maven仓库中虽有其名,却无法下载到jar包. 这就需要手动下载Oracle JDBC驱动并将其安装到本地Maven仓库中. 如果从官网下载, ...
- 【LeetCode】47. Permutations II
Permutations II Given a collection of numbers that might contain duplicates, return all possible uni ...