日期:2014-05-18  浏览次数:20524 次

100分求,关于日、周、月排行思路
有个思路有点老土,

  select top 10 songname,lastupdated from song  
  where datediff(ww,lastupdated,getdate())=0 order by 点击次数 desc  
   
  select top 10 sitename,lastupdated from song  
  where datediff(dd,lastupdated,getdate())=0 order by 点击次数 desc

这个是按本日日期来取得排行的。但是比果今天的三个东西点击数分别是60 45 22
那就是这样排的
60
45
22

但是要是第了第二天,三个东西的点击数又累积到 80 99 78

那排行就是
99
80
78

但是实际上第二天的第一个东西增加了20 第二个东西增加了 54 第三个东西增加了56
而正确的显示应该是
56
54
20
而不是上面的
99
80
78

且还得实现每天从头记录一次。一周累积记录一次。一月累积记录一次。还要一个永久的总排行,也就是记录总合。。
这个要咋实现呢。各个大大请出下高招。。
此问80分

-------分割线-----
我还有一个程序的用户和信息得导入另一个程序的用户 信息数据库。。。是不同的表结构。。
感觉有点像某某论坛转换到某某论坛那种转换器。
这个也请给点思路。谢谢了
此问20分。。

------解决方案--------------------
第二题,我以前这样做过,做个循环把老表中的记录一条条的取出,然后,再把此记录中的字段一个个的插入新表中相应的字段中就行了。
------解决方案--------------------
第二题补充一下,可以用程序实现,也可以直接在查询视图中用T-SQL语句完成。
------解决方案--------------------
你不是做类似于排名这样的边框的么!!把数据全都保存在数据库中,读的时候去判断日期.写入的日期在
if(日 >7日) 则重新计数,把7天的数保存下来.
if(周 >4周) 再次保存,重新计数.
然后就是对数据库的操作.对不,自己想想看!!你可能没有理解我的意思!!