一道比较难的查询问题
有table结构如下,日期datetim型,姓名VARCHAR型,数量int型. 
    日期                                    姓名                     数量 
 2007-05-12         张三                              3 
 2007-05-16         张三                              3 
 2007-05-18         张三                              5 
 2007-05-20         张三                           10 
 2007-05-13         李四                           11 
 2007-05-17         李四                           12 
 2007-05-18         李四                           13 
 2007-05-19         李四                           15 
 2007-05-12         小王                           12 
 2007-05-11         小王                           13 
 2007-05-17         小王                           14 
 2007-05-19         小王                           15   
 要求显示所有人的:   
 离当前时间最近3次记录的平均间隔时间                        姓名                              平均数量 
 DATEDIFF(day,2007-05-16,max(日期))/3               张三                                    6 
 DATEDIFF(day,2007-05-17,max(日期))/3               李四                                    13.3 
 DATEDIFF(day,2007-05-11,max(日期))/3               小王                                    14      
 我只写出了所有记录的平均时间: 
 select   DATEDIFF(day,min(日期),max(日期))/count(姓名),姓名,avg(数量)   from      table      group   by   姓名   
 如何获取离现在最近的第3次记录不知道怎么求,请教各位大侠了. 
------解决方案--------------------SELECT uName,AVG(uNum) 
 	FROM tb a 
 	WHERE 3>  
 		( 
 			SELECT COUNT(*) FROM tb WHERE uName=a.uName 
 				AND ABS(DATEDIFF(dd,fDate,GETDATE())) 
 				 <ABS(DATEDIFF(dd,a.fDate,GETDATE())) 
 		) 
 	GRUOP BY uName   
 随手敲的,可能有手误
------解决方案--------------------select [离当前时间最近3次记录的平均间隔时间]=DATEDIFF(day,min(日期),max(日期))/3,姓名,平均数量=ltrim(str(avg(cast(数量 as decimal)),10,1)) from 
 ( 
 	select 日期, 姓名,数量 from test a where 日期 in 
 	( 
 		select top 3 日期 from test where 姓名=a.姓名 order by 日期 desc 
 	) 
 )b 
 group by 姓名
------解决方案--------------------多写了一层嵌套,改下 
 select DATEDIFF(day,min(日期),max(日期))/3, 姓名,平均数量=ltrim(str(avg(cast(数量 as decimal)),10,1)) from test a where 日期 in 
 ( 
 	select top 3 日期 from test where 姓名=a.姓名 order by 日期 desc 
 ) 
 group by 姓名
------解决方案--------------------select tname,sum(num) from tb a where tdate in ( select top 3 tdate from tb where tname=a.tname order by tdate desc)  
 group by tname