日期:2014-05-17  浏览次数:20431 次

sql 统计算法,求给个方法或者思路
ID      Speed            Time
1        10       2013/1/23 10:00:00
2        20       2013/1/23 10:20:00
3        50       2013/1/23 10:50:00
4        60       2013/1/23 11:20:00
5        29       2013/1/23 12:20:00
6        45       2013/1/24 10:20:00
7        48       2013/1/24 10:49:00
8        39       2013/1/24 11:00:00
9        41       2013/1/24 12:20:00
10       29       2013/1/24 12:25:00
11       31       2013/1/24 13:20:00
12       60       2013/1/24 15:20:00
13       10       2013/1/25 1:00:00

大概数据如上,客户可根据自己输入的速度和时间来定义超速,并查询统计结果,如当输入速度30,时间为30分钟:则表示速度大于等于30时,且持续时间在30分钟以上为超速,大概统计结果
Num    Time
1      2013/1/23
2      2013/1/24
0      2013/1/25
23号ID为3、4时满足要求,总共有1条记录;24号ID为6、7、8、9和11、12时满足要求,总共2条记录;25号时没有满足数据,则记0
该表数据量很大,有没有好的思路和解决方案
算法 sql 优化查询

------解决方案--------------------
----------------------------
-- Author  :磊仔
-- Date    :2013-01-24 22:38:56
-- Version:  
--      Microsoft SQL Server 2008 (SP2) - 10.0.4000.0 (Intel X86)   
-- Sep 16 2010 20:09:22   
-- Copyright (c) 1988-2008 Microsoft Corporation  
-- Enterprise Edition on Windows NT 6.1 <X86> (Build 7600: )  
--
----------------------------
--> 测试数据:#TA
if object_id('tempdb.dbo.#TA') is not null drop table #TA
go 
create table #TA([ID] int,[Speed] int,[Time] datetime)
insert #TA
select 1,10,'2013/1/23 10:00:00' union all
select 2,20,'2013/1/23 10:20:00' union all
select 3,50,'2013/1/23 10:50:00' union all
select 4,60,'2013/1/23 11:20:00' union all
select 5,29,'2013/1/23 12:20:00' union all
select 6,45,'2013/1/24 10:20:00' union all
select 7,48,'2013/1/24 10:49:00' union all
select 8,39,'2013/1/24 11:00:00' union all
select 9,41,'2013/1/24 12:20:00' union all
select 10,29,'2013/1/24 12:25:00' union all
select 1