如何实现"当天点击排名,当月点击排名"

cs1688 2005-09-01 09:31:43
有一个新闻系统,
现在只有一个表,有字段"标题,内容,时间,点击次数,

如何实现当天点击排名,录月点击排名,是不是要另外建个表呢
...全文
214 15 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
cs1688 2005-09-02
  • 打赏
  • 举报
回复
这个表的字段是怎么样的呢
navy_koo 2005-09-02
  • 打赏
  • 举报
回复
可能有些会违背设计一些设计原则,但可能这里最重要的还是数据量和性能问题!
navy_koo 2005-09-02
  • 打赏
  • 举报
回复
那也可以改成

id,pid,monthtime,daycount,count

count 记录每月点击次数,
daycount 记录当月每天的点击次数,形式如:(11)(12)(110)....

或者改成
id,pid,monthtime,day1count,day2count,day3count,day4count,day5count,day6count,
day7count,day8count,day9count,day10count,day11count,day12count,day13count,day14count,
day15count,day16count,day17count,day18count,day19count,day20count,day21count,day22count,
day23count,day24count,day25count,day26count,day27count,day28count,day29count,day30count,
day31count,count
stoneyu 2005-09-02
  • 打赏
  • 举报
回复
按hchxxzx的做法,這樣不是很慘?如果有一千篇文章,每篇訪問一萬次,就是一千萬條記錄!!!
其實可以這樣實現,原表不變,記錄點擊總數
新建兩個表(或全並為一個也可以),有如下字段
日排行:id,pid,daytime,count
月排行:id,pid,monthtime,count

這樣每一篇文章每一天都會在日排行表裏增加一條記錄(點擊為1以上),每一個月會在月排行表裏增加一條記錄..

這樣划算得多了...
cs1688 2005-09-02
  • 打赏
  • 举报
回复
写错:
id, 点击次数,日期
1 , 120, 2005-8-7
1 , 130, 2005-8-8
1 , 10, 2005-8-9
cs1688 2005-09-02
  • 打赏
  • 举报
回复
你的意思是:
id,pid,stime
1,1,2005-8-8
1,1,2005-8-10
1,1,2005-8-9

这样的话好象会很大,
能不能:
id, 点击次数,日期
1 , 120, 2005-8-8
1 , 130, 2005-8-8
1 , 10, 2005-8-8
或者有没有好的方法
hchxxzx 2005-09-02
  • 打赏
  • 举报
回复
把你上表的点击次数去掉,专门建一个表来实现点击数,此表里面即有时间
id,pid,stime
流水号,与新闻表关联ID,点击时间

然后求取如下:
select * from
(
select a.*,(select count(*) from table b where a.id = b.pid and b.时间=(月份或日期)) num
from
tablea a
) c
order by c.num desc
ghchen 2005-09-02
  • 打赏
  • 举报
回复
标题 内容 加入日期 点击次数
abc abc 2005-8-8 100
是可以的
lengyubing_1983 2005-09-01
  • 打赏
  • 举报
回复
做过软件下载日月排行,是建了一个表,保存下载记录.这样求排行是正确的.
下载次数多的话,这个表的是会非常大的
lengyubing_1983 2005-09-01
  • 打赏
  • 举报
回复
我那个错了
dsclub 2005-09-01
  • 打赏
  • 举报
回复
呵呵,那个日期是加入日期呀
cs1688 2005-09-01
  • 打赏
  • 举报
回复
好象不太对啊,
表大概如下:
标题 内容 加入日期 点击次数
abc abc 2005-8-8 100

按照几位回答的话,好象不能确定点击次数是哪个日期段啊,是不是要另外加个字段啊
yingcongxiao 2005-09-01
  • 打赏
  • 举报
回复
我直接下载一个现成的控件,一次就不用写,呵呵。。。SelectDataGrid
Oceanson 2005-09-01
  • 打赏
  • 举报
回复
楼上正解 不过 datediff函数不一定任何数据库都支持 思路是一样的 就是在日期范围内对点击次数排序
lengyubing_1983 2005-09-01
  • 打赏
  • 举报
回复
不用另建表,
select top Num * from 表名 where datediff(day,时间字段,getdate())=0 order by 点击次数 desc(当日点击排行,Num为你要显示前几个)

select top Num * from 表名 where datediff(month,时间字段,getdate())=0 order by 点击次数 desc(当月点击排行,Num为你要显示前几个)

62,244

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧