id username SignTime xxid ustype ID号 用户名 注册时间 上线ID 用户状态(激活/未激活)
注册时间(SignTime) 和 上线id(xxid)有关系吗? 上线id是不是每次用户登陆就累加+1 总之我看到楼主的叙述后感到楼主这样设计数据库达不到你说的效果。 我是这样解决的 数据库设计 库1(user) id username SignTime xxid ustype ID号 用户名 注册时间 上线ID 用户状态(激活/未激活) 库2(useradd) id user_id addtime id 自动编号 user.id 登陆时间
实现 用户每次登陆将user.id 和登陆时间 写入数据库 统计出一周时间内前10名时 SELECT TOP 10 useradd.user_id, Count(useradd.user_id) AS 登陆次数, user.user FROM [user] INNER JOIN useradd ON user.id = useradd.user_id WHERE (((useradd.add_time)>#5/11/2008# And (useradd.add_time) <#5/19/2008#)) GROUP BY useradd.user_id, user.user ORDER BY Count(useradd.user_id) DESC;
WHERE (((useradd.add_time)>#5/11/2008# And (useradd.add_time) <#5/19/2008#)) 的取值可以用变量带进去 先获取当前系统日期(作为截止日期) 然后用利用Datediff() 函数写一个计算开始日期的自定义函数 你写函数时可以参考下面的代码( 我不可能把所有的细节都给你说的很清楚,否则你什么都学不到)
<% xztime=#2008-5-13# if weekday(xztime)=1 then xztime=DateAdd("d", -6, xztime) if weekday(xztime)=2 then xztime=xztime if weekday(xztime)=3 then xztime=DateAdd("d", -1, xztime) if weekday(xztime)=4 then xztime=DateAdd("d", -2, xztime) if weekday(xztime)=5 then xztime=DateAdd("d", -3, xztime) if weekday(xztime)=6 then xztime=DateAdd("d", -4, xztime) if weekday(xztime)=7 then xztime=DateAdd("d", -5, xztime)
for j=1 to 7 id= weekday(xztime) select case id case 2 dd="星期一" case 3 dd="星期二" case 4 dd="星期三" case 5 dd="星期四" case 6 dd="星期五" case 7 dd="星期六" case else dd="星期日" end select response.Write(year(xztime)&"年"&month(xztime)&"月"&day(xztime)&"日" &dd&" <br>") xztime= DateAdd("d", 1, xztime) next %> 既然以上代码可以将整个星期的日期都算出来 你还不知道怎么做吗?
select top 10 xxid,count(id) as id from users where ustype="击活" and datediff(day,SignTime,now()) <=7 group by id,xxid order by id desc 大概就照这样的思路写,应该可以。(我写的估计还有错误,思路就是这样的,你自己慢慢完善吧!)
SELECT TOP 10 xxid, COUNT(xxid) AS SUM FROM test WHERE ustype = "击活" and signtime>begintime and signtime <endtime GROUP BY xxid ORDER BY SUM DESC 我自己这测试了,可以的.
多谢, 看看这个代码统计只能统计登陆的ID也就是Session("id") ,后台统计所有ID如何做呢 Users where sxid=" _& Session("id")&
set slDay=new ajgraph slDay.reArr 30,6 CFG_ZoneServer=8 U_TZone=8 SiteID=125 set rslDay=conn.execute("select top 30 sum(OutPop),sum(Sxid),datevalue(SignTime+"&U_TZone&"/24) from Users where sxid=" _ & Session("id") & " and SignTime <= #"&dateadd("h",0-CFG_ZoneServer,now())&"# group by datevalue(SignTime+"&U_TZone&"/24) order by datevalue(SignTime+"&U_TZone&"/24) desc") U_now = dateadd("h",U_TZone-CFG_ZoneServer,now())