首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

取样统计的SQL语句如何写

2012-04-14 
取样统计的SQL语句怎么写?关于抽样统计的问题:一个表里面有三个字段:测试项TestItem、测试时间TestTime和测

取样统计的SQL语句怎么写?
关于抽样统计的问题:
  一个表里面有三个字段:测试项TestItem、测试时间TestTime和测试值TestValue
  现在要做抽样统计:在存储过程中按照给定的时间段@starttime和@stoptime,将这个时间段分成25个等长时间段, 然后在25个时间段中每个时间段内抽取5条记录, 再对每个时间段中的5条记录取他们的测试值的最大与最小的差值, 最后对这25个差值取平均值。
  请问这个抽样统计用SQL怎么写,因为具体到实践中还需要统计一个类似的数据,所以考虑要用表变量,或者临时表,不知道对不对?

[解决办法]
你给点测试数据吧
[解决办法]
1、25个等长的时间段,这个是按什么计算的,小时 分钟 秒数 ?
2、每个时间段抽取5条记录,抽取方式是怎样的?随机?
[解决办法]
楼主最好是结合测试表的结构 数据 和 统计结果来说明,会更直观。
[解决办法]
你这个时间段是按照什么单位来算的?

分钟还是小时还是????

[解决办法]

SQL code
declare @i int,@a datetime,@b datetimeset @a='2012-03-28 09:00:00'set @b='2012-03-28 09:50:00'set @i=datediff(mi,@a,@b)*1.0/25select @iselect dateadd(mi,number*@i,@a),dateadd(mi,(number+1)*@i,@a) from master..spt_values where type='p'and number<=25
[解决办法]
关键是你不知道怎么等分吧,参考

SQL code
declare @a datetime = '2012-03-01'declare @b datetime = '2012-03-02 01:00'declare @minute int = datediff(minute,@a,@b)/25;with cte as(    select group_id=datediff(minute,dt,@a)/@minute, * from tb where dt between @a and @b)select * into #tmp from cte t where [key] in (select top 5 [key] from tb where group_id=t.group_id order by newid())select max(val)-min(val), avg(max(val)-min(val))over() from #tmp group by group_id 

热点排行