有一张用户登录日志表,想查询出满足一小时内个登录次数大于10次的用户

解决方案 »

  1.   

    select count(*),username,logtime from loginfo 
    group by substr(logtime,1,12),usernaem
    having count(*) >=10举例中,logtime 登录时间,类似 20120614123112的格式
      

  2.   

    本来想用一条sql搞定,看来不行,说一下我最后的实现方法吧1、先查询出当天登录次数超过10次的用户id列表
    SELECT USERID,
        COUNT(USERID) AS COUNT,
        FROM LOGININFO
        WHERE LOGINDATE >= to_date(logindate,'YYYY-MM-DD')
        GROUP BY OPERSIGN HAVING count(USERID)>= 10
    2、根据第一步获取的用户id列表,逐个查询用户当天的登录时间,倒序排
    SELECT 
        USERID,
        TO_CHAR( LOGINDATE,'YYYY-MM-DD HH24:MI:SS') AS LOGINDATE,
        LOGINSTATUS
        FROM LOGININFO
        WHERE USERID= userid
        ORDER BY LOGINDATE DESC
    3、然后取第二步获取列表的第1条记录和第10条记录,判断时间差是否大于1小时(大于一小时符合,小于一小时则删除第一条记录,递归,直至记录不足10条)