有个表 结构这个
域名,
当日排名,
日期,
十五天平均排名,
三十天平均排名,
六十天平均排名,
一百八十天平均排名,
三百六十天平均排名也就是统计 100 万 域名的排名,每天导入100万的域名数据,然后计算出排名,主要语句,也就是 AVG 平均排名,
现在每天需要计算 各种平均排名,因为数据量很大,计算很缓慢,求大神优化
域名,
当日排名,
日期,
十五天平均排名,
三十天平均排名,
六十天平均排名,
一百八十天平均排名,
三百六十天平均排名也就是统计 100 万 域名的排名,每天导入100万的域名数据,然后计算出排名,主要语句,也就是 AVG 平均排名,
现在每天需要计算 各种平均排名,因为数据量很大,计算很缓慢,求大神优化
然后,进行计算,
如
取 15 天平均排名
select @averagerating = (case when avg(排名) is null then @ranking else avg(排名) end) from Alexa表 where 域名= @域名 and CONVERT(varchar(10),日期,23) >= Convert(varchar(12),dateadd(day,-14,@date),23) and CONVERT(varchar(10),日期,23) <
= Convert(varchar(10),@date,23) --15天平均排名 然后更新到今天的数据中
2,不要使用游标
3,此类用一句case SQL可以查询出来的,比如计算15天内,
select avg(排名) as ranking from Alexa表 where 域名= @域名 and (日期-getdate())>14