SQL查询_____查询最近30天内正确率大于60%的阅读记录,每天只显示符合条件的速度最高的那个

 最近在做一个小项目时,有一这样的需求:查询最近30天内正确率大于60%的阅读记录,  每天只显示符合条件的速度最高的那个.

现有数据库表字段:

 

 

 

 

 

 

 

 

 

 

 

写成存储过程如下:

create PROCEDURE usp_getDataByRange
@range int
AS
 select * from
 (SELECT id, RD_User, RD_OrginalArticle, RD_RightWords, RD_DictationArticle,
      RD_LastReadIndex, RD_Speed, RD_ReadTime, RD_DictationTime, RD_SumTime,
      RD_PrecisionRate, CONVERT(VARCHAR(50) ,RD_TestTime, 101) as Time,
case
when  RD_PrecisionRate=max(RD_PrecisionRate) over(partition BY CONVERT(VARCHAR(50) ,RD_TestTime, 101)) 

then  'zuigao'
end as ZUI
FROM OR_ReadingDetails
WHERE (DATEDIFF(day,RD_TestTime,GETDATE()) <= @range) and  RD_PrecisionRate>=60  ) as temp
where temp.zui is not null .

这样的一个缺陷在于:如果一天当中有两条记录都是最高的话将会被查出来。

 
posted @ 2010-11-10 11:05  泪的诺言lni  阅读(1058)  评论(1)    收藏  举报