首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 周统计如何来做!!! [已结贴,结贴人:hyany]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • hyany
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    • 揭帖率:
    发表于:2008-05-19 19:34:01 楼主
    研究了一上午,把自己都研究晕了,大家帮忙搞一下吧,万分感谢!!!!!!!!!
    数据库access  表名users 
    id    username    SignTime    xxid          ustype
    ID号    用户名      注册时间    上线ID    用户状态(激活/未激活) 

    问题一:想做个统计出一周时间内前10名xxid(下线)数从最多到少的排行榜(状态是激活),如何做 需要设定开始时间和结束时间吗? 还是用datediff(week,SignTime,getdate())
    想要的是长久的每周自动计算评出第一,第二,第三后插入一个新数据表记录,然后再评下一周的统计 然后再加入到数据表~~
    高手们有没有被听晕~~~~ 大家帮忙写点提示~~~~稍微详细点的例子~~~~~~~~~敬礼!!!!!!!!!!
    分不够可以再加,帮帮忙吧~~~~~~~~~~
    20  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • hyany
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-19 20:20:401楼 得分:0
    大哥大姐门............在线等了一天了!!!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • hyany
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-19 21:40:152楼 得分:0
    一直在线等,给点提示也行呀!!!!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • meimeihao98
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-19 23:30:183楼 得分:5
    楼主的问题可以再说的清楚一点吗?

    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
    %>
    既然以上代码可以将整个星期的日期都算出来 你还不知道怎么做吗?


    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • hyany
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-20 00:51:494楼 得分:0
    大哥,你理解错了,上线ID 是通过 ,比如c1注册的用户 他的上线就是C1 的ID号
    我想统计的是一周内 注册的下线最多的ID号排行
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • hejun88321
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-20 01:33:445楼 得分:0
    黑客程序员联盟QQ群号62058889大量招人~~~爱交流的人...长期不在线 潜水 不交流的人别进.一起把群搞好 谢谢~~~进群介绍下特长
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • hyany
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-20 08:25:066楼 得分:0
    顶一下
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • ziziszj
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-20 11:26:247楼 得分:0
    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
    大概就照这样的思路写,应该可以。(我写的估计还有错误,思路就是这样的,你自己慢慢完善吧!)
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • hyany
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-20 11:54:268楼 得分:0
    思路不错,可还是不行,我比较菜的说,
    谢谢大家,敬礼!!!!!!!!!!!!!!!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • hyany
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-20 13:35:259楼 得分:0
    快疯了,这么一段代码折磨了两天了
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • meimeihao98
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-20 14:45:3510楼 得分:0
    原来你是在做老鼠会管理程序啊
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • meimeihao98
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-20 14:46:3811楼 得分:0
    引用 7 楼 ziziszj 的回复:
    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
    大概就照这样的思路写,应该可以。(我写的估计还有错误,思路就是这样的,你自己慢慢完善吧!)
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • hyany
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-20 15:18:5112楼 得分:0
    说的啥呀,给点帮助呀
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • ziziszj
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-20 15:23:1613楼 得分:0
    你自己不动手做,老等着别人给你完全正确的答案是不太可能的。
    只有一步一步的测试,排除错误,这样才能得到最终正确的答案的。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • ziziszj
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-20 15:23:3214楼 得分:0
    你自己不动手做,老等着别人给你完全正确的答案是不太可能的。
    只有一步一步的测试,排除错误,这样才能得到最终正确的答案的。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • hyany
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-20 15:41:1015楼 得分:0
    大姐 研究两天了,可对这里统计的实在不行 一直在用不同的方法研究的说
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • ziziszj
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-20 16:30:3316楼 得分:10
    endtime=now()
    begintime=datediff(day,7,endtime)

    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
    我自己这测试了,可以的.
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • hyany
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-20 16:48:5317楼 得分:0
    多谢, 看看这个代码统计只能统计登陆的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())
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • hyany
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-20 17:16:1118楼 得分:0
    第一个个提示:一点没变放上去提示
    错误的参数个数或无效的参数属性值: 'day'
    我改成了begintime=datediff("d",7,endtime)

    第二个提示:而后又提示:
    SELECT 子句中包含一个保留字、拼写错误或丢失的参数,或标点符号不正确   
    AS SUM这句access数据库没问题吗?

    我把as sum去掉了
    第三个提示:至少一个参数没有被指定值。
    我又把begintime 和endtime 加了"& egintime &"这个

    第四个提示 语法错误 (操作符丢失) 在查询表达式 'Flag = 1 and signtime>39581 and signtime <2008-5-20 17:12:41' 中。
    应该是begintime 和endtime 时间不统一格式吧 我继续改
    还是有错误,我真的疯了 我很努力了,我确实很面 我也想学.......今天又研究这段代码又是一天 整个人特压抑!!!



    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • jhwcd
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-20 17:59:1419楼 得分:5
    引用 16 楼 ziziszj 的回复:
    endtime=now()
    begintime=datediff(day,7,endtime)

    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
    我自己这测试了,可以的.
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • hyany
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-20 22:31:1820楼 得分:0
    高手上来咋不说话? 这段代码没问题?
    为啥我无论在本机测试还是在 虚拟主机测试都通不过呢!!! 是asp +access的吧?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • hyany
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-20 22:42:2121楼 得分:0
    高手 能把这段话简单意思翻译一下吗?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • hyany
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-20 22:52:1122楼 得分:0
    实在研究的头都痛了,明天出差 好几天才能回来.帖子先结了,谢谢大家
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved