说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

问一个按时间查询问题!

编辑:说三道四文库 发布时间:2017-12-15 09:02
HTML文档下载 WORD文档下载 PDF文档下载
表的形式为:
mytable:
(id int,            
 starttm datetime,
 endtm,datetime
)
id          starttm                   endtm
1           2003-07-28 10:37:35.000   2003-07-28 10:37:39.000
2           2003-07-28 10:37:36.000   2003-07-28 10:37:45.000
3           2003-07-28 10:37:36.000   2003-07-28 10:38:55.000
4           2003-07-28 10:37:37.000   2003-07-28 10:39:25.000
5           2003-07-28 10:37:37.000   2003-07-28 10:37:39.000
6           2003-07-28 10:37:37.000   2003-07-28 10:37:45.000
.....................................

要求从starttm的最小时间开始,到endtm的最大时间结束,每隔两秒统计starttm<=抽样时间<=endtm的记录数,由于表比较大,使用临时表,一条条的统计添加速度太慢,请问一个高效率查询方法,谢谢!

这种方法太慢了:
declare @start datetime,@end datetime
declare @cnt int
set @start = (select min([starttm]) from mytable)
set @end   = (select max([endtm,]) from mytable)
drop table #result
create table #result
(
starttm datetime,
cnt     int
)
while(@start < @end)
begin
set @cnt = (select count(*) from mytable where [starttm] <= @start and @start <= [endtm] )
insert #result values (@start,@cnt)
set @start = dateadd(ss,2,@start)
end
select * from #result



1、建立序数表:
select top 10000 identity(int,0,2) id into 序数表 from sysobjects a,sysobjects b,sysobjects

2、
declare @start datetime,@end datetime, @cnt int

select @start=min([starttm]),@end=max([endtm]) from mytable

select *,(select sum(1) from mytable where [starttm]<=时间  and 时间<= [endtm]) 合计 from (
select dateadd(ss,id,@start) 时间 from 序数表 where dateadd(ss,id,@start)<=@end ) tem
declare @start datetime,@end datetime
declare @cnt int
set @start = (select min([starttm]) from mytable)
set @end   = (select max([endtm,]) from mytable)
drop table #result
create table #result
(
starttm datetime,
cnt     int
)
while(@start < @end)
begin
  insert #result values (@start, 0)
  set @start = dateadd(ss,2,@start)
end
update #result 
set cnt = (select count(*) from mytable 
             where A.starttm between [starttm] and [endtm])
from #result A
select * from #result
declare @start datetime,@end datetime
declare @cnt int
set @start = (select min([starttm]) from mytable)
set @end   = (select max([endtm,]) from mytable)
drop table #result
create table #result
(
starttm datetime,
cnt     int
)
while(@start < @end)
begin
  insert #result values (@start, 0)
  set @start = dateadd(ss,2,@start)
end
update #result 
set cnt = (select count(*) from mytable 
             where A.starttm between [starttm] and [endtm])
from #result A
select * from #result
非常感谢
能帮我解释一下序数表的作用么?
alter table tableName add id int identity(0,2)

select *,(select sum(1) from tableName where 时间 between [starttm] and [endtm]) cnt from (
select dateadd(ss,id,@start),* from tableName where dateadd(ss,id,@start)<=@end) tem

alter table tableName drop column id


create table test id int ,starttm datetime,endtm datetime 
insert into test
select 1,'2003-07-28 10:37:35.000','2003-07-28 10:37:39.000' 
union all
select 2,'2003-07-28 10:37:36.000','2003-07-28 10:37:45.000' 
union all
select 3,'2003-07-28 10:37:36.000','2003-07-28 10:38:55.000' 
union all
select 4,'2003-07-28 10:37:37.000','2003-07-28 10:39:25.000' 
union all
select 5,'2003-07-28 10:37:37.000','2003-07-28 10:37:39.000' 
union all
select 6,'2003-07-28 10:37:37.000','2003-07-28 10:37:45.000' 


alter table test add md int identity(0,2)
go
declare @start datetime,@end datetime
declare @cnt int
set @start = (select min([starttm]) from test)
set @end   = (select max([endtm]) from test)
select starttm,(select sum(1) from test where @start between [starttm] and [endtm]) cnt from (
select dateadd(ss,md,@start) as starttm from test where dateadd(ss,md,@start)<=@end) tem
go
alter table test drop column md
go
alter table test add md int identity(0,2)
go
declare @start datetime,@end datetime
declare @cnt int
set @start = (select min([starttm]) from test)
set @end   = (select max([endtm]) from test)
select *,(select sum(1) from test where 时间 between [starttm] and [endtm]) cnt from (
select dateadd(ss,md,@start) 时间 from test where dateadd(ss,md,@start)<=@end) tem
go
alter table test drop column md
go
to pengdali(大力 V2.0):
你的方法统计出来的结果有点不对
1、建立序数表:
select top 10000 identity(int,0,10000) id into 序数表 from sysobjects a,sysobjects b,sysobjects

2、
declare @start datetime,@end datetime, @cnt int

select @start=min([starttm]),@end=max([endtm]) from mytable
select (ss,aa.id,bb.startTime),(select count(*) from mytable where [starttm] <= @(ss,aa.id,bb.startTime) and @start <= [endtm] )
from 
序数表 aa left join (select @start as StartTime)bb on dateadd(ss,aa.id,bb.startTime)<=@end 
where bb.starttime is not null

Hadoop+GPU强强联手的性能探索 Eurora获最节能超算殊荣,中国天河2号位列第31 程序员的野心:让GPU像CPU一样运行 Gungho热潮正在逐渐消退? Thalmic创始人专访:穿戴式体感设备MYO背后的开发故事 移动周报:GSMA各种神器,Qt 5.1,Android 4.3,本周惊喜多多! 奇虎360Web平台部基础架构团队访谈:开源线上数据库中间件Atlas 化繁为简:UC优视发布“UC+”开放平台战略 从40亿美元到10亿美元 Hulu的美梦是否又一次成为泡影? 百度开发者俱乐部第六期:BAE3.0开放内测 云编程马拉松启动 微软宣布将于今年9月30日正式关闭MSN TV服务 程序员不应该再犯的五大编程错误 中国开源事业,路在何方? StackOverflow上的编程趋势 Oracle悄然将Berkeley DB许可证更改为AGPL 简单易用,保护隐私:麻省理工的邮件数据挖掘分析工具Immersion Microsoft Ventures进入中国,为云生态系统构建提供加速度! 这是场战争:盘点那些参与智能手表竞争的厂商 三星豪掷80万美元奖金 第二届全球开发者挑战赛开幕 MongoDB Map Reduce速度提升20倍的优化宝典 腾讯云总经理陈磊:可信任云服务背后的技术支撑力 “叫好不叫座”的石墨烯也许会给我们带来更清凉、更长寿的计算机 微软WPC 2013:Windows 8.1将于8月底提供给OEM合作伙伴 TIOBE 2013年7月编程语言排行榜:PHP强势回归 扁平化设计或成下一个流行趋势吗? 永生、登天、出唱片、开托儿所,IT大佬业余还玩什么? 终于盼来了:苹果iOS7 Beta 3、Xcode5预览版 可堆叠的创意 开源硬件Microduino开发团队专访 致任天堂的公开信:我想在iPhone上玩超级玛丽 为什么OpenStack被视为新的Linux? Netflix开源Pig可视化框架:Lipstick 大家好,在线调查 原来asp中的recordset 在.net中还能用吗 “参数不足,期待是1”是什么意思? 如何读取一个文本文件的最后一行 将一表中的所有A列和B列的值(varchar型)合并后,添加到C列中。这个SQL语句怎么写? 请教用公式urlopen如何在“另一窗口“打开一页面。 win2000下如何给程序指定program ID 急,急,在VC中如何.sql文件(ORACLE) 我的DW不能启动了,问题解决马上给分100! 高手请进,在线等待! 下了一个手机游戏(JAR、JAD),想在计算机上模拟运行一下,该怎么做? 使用 应用程序组装工具 创建.ear,创建.war 在WAS中安装出现错误 !!! 立即给分 怎样改变由 javaw 打开的*.jar文件的图标? 纯粹好奇~水园、昨天晚上发生了什么? 为什么修改httpd.conf后,APACHE服务不能启动? 想买两本书,请看过该书的朋友评价一下,特别是书里的代码是C#的还是VB.NET的? win2000注册表问题 什么时候需要定义过程??? 兄弟们,替我出口气 800*600分辨率下,toolbar显示不完整,请问该如何解决?(100分) 我想在数据窗口中显示年龄信息,但是出错了!! 各位大侠,兄弟很急得问题,80分奉送 [ 新手 ] 请问几个关于时间的SQL语句 用ROUND函数,需要包含哪个头文件? 高手请进,在线等待!!! 怎么样用HTML代码实现在一个.htm文件中加载另一个.htm文件 ??? 哪位大哥有能解析ANS.1语言的东西? 比较大小的简单问题? 用Ras拨号过程中,如何取消拨号? 大家看看合适否? 怎样以逗号为标记分段读取内容? 求救:本地计算机无法启动 oracleserviceoradb 服务! java和.net你们好吗?保重VC。 如何把XML文件导到oracle数据库中? 变量初值问题,高手请进 求通过手机号码判断出手机入网地址(如上海,江苏等)的java接口 如何把htm文件移植到VB.NET中. 妈的找了几天广告交换的网站,怎么全是色情的,正常的网站就没有吗?你们的网站放不放这些东西 。 键盘错乱 高人指点 从.net想到php(欢迎大家讨论) WebService 连接问题????????????????????????????? 如何判断用户是否安装pdf格式阅读器 有什么好办法破解论坛的密码? 一个高难度的问题。100分求教!!! 构建EXCEL后,写入数据为何报错,请邦我看看 DELPHI与ORACLE9I中的BLOB字段存取的问题 怎么关闭窗口? 关于读取图片的问题! 打印口的传输时序是如何定义的 我要在数据窗口中实现出货日期在20天之内的记录的字体颜色为红色,font.color的expression该怎么写?在线等待!!! 请问怎么安装statspack? 以定点A(2,8)和动点B为焦点的椭圆经过点P(-4,0)、Q(2,0).(1)求动点B的轨迹方程;(2)是否存在实数k,使直线y=kx+2与上述B点轨迹的交点C,D恰好关于直线l:y=2x对称?如果存在,求出k的值;如果不存在 已知F是椭圆x^2/4+y^2/3=1的右焦点,A(1,1)为椭圆内的一定点,P为椭圆上的动点.(1)|PA|+|PF|的最小值为_____(2)|PA|+2|PF|的最小值为______4-√5 ; 3不要用椭圆第二定义做哦。也不能用线性规划。 已知椭圆x^2/a^2+y^2/b^2=1,(a>b>0)左右焦点为F1F2,P为椭圆的动点,已知椭圆x^2/a^2+y^2/b^2=1,(a>b>0)左右焦点为F1F2,P为椭圆的动点,求向量PF1与向量PF2成最大角时P点的坐标! “青春就是暴走的性欲” 出自哪部动漫来着?= = 青春就是暴走的性欲来自哪部动画片? 溶解度/g10℃ 60℃甲 32 36乙 15 50丙 12 10 将60℃的甲的饱和溶液降温至10摄示度时,除溶解度发生改变外,另外会改变的还有___在10摄示度时向100g乙的饱和溶液中加入10g乙晶体,充分搅拌 则所得溶 青春就是暴走的性 青春就是暴走的性欲,如何理解此话?偶然看到的一句话 琢磨半天 也没猜出个所以然.. 化学帝速来! 一个小于1的分数,他的分子和分母相加的和是13,这样的分数一共有几个?分别是哪些数? 美国一航天飞机“追梦者”试飞降落时滑俄罗斯警方逮捕一名系自杀式炸弹腰带男日本花美男惊艳女装照 让女生情何以堪安倍警卫车队连续两天发生交通事故 无日本一空宅被拆除时惊现\"死婴罐\"民调显示日本近1/4年轻人称自己在“美国一航天飞机“追梦者”试飞降落时滑新加坡欲购88套美国多管制导火箭发射日媒披露日本或早已成为美情报机构窃听安倍警卫车队连续两天发生交通事故 无分析称土耳其宣布选中国导弹只是向欧美Helio X10的红米note3很纽约推“怀旧地铁”服务 让乘客穿越至游客戴口罩游览雾霾中的北京南锣鼓巷《中国古琴珍萃》推出增订版 收录历代如何虏获罗彻斯特TESOL这国际化“生日带了这个字迟早要发财教育部回应“邓亚萍兼职法大教授”争议团车君三招教你怎么计算自己的车值多少校园真实灵异事件,暗藏凶险的女厕所!“炸筋腿”是怎么一回事?绿点净水纯水设备成功入驻厦门澳视达温侯网游行只有我知道的世界三国神隐记西行恋妖记骗神第七脑域霸道总裁,不许和我抢妈咪欲罢不能异世之技能至尊阿憨正传网游之废物传说景州乐园旅游礐石旅游板约瀑布旅游南佛山旅游海棠湾万达大剧院旅游苏马荡景区旅游交运两坝一峡旅游闵行体育公园旅游胡仙堂旅游普照楼旅游陇海路步行街旅游
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘