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

SQL查询优化实践
本文介绍了一个具体的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 .

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

 

转载于:https://www.cnblogs.com/zhlnxindie/archive/2010/11/10/1873382.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值