select count(*),username,logtime from loginfo group by substr(logtime,1,12),usernaem having count(*) >=10举例中,logtime 登录时间,类似 20120614123112的格式
本来想用一条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条)
group by substr(logtime,1,12),usernaem
having count(*) >=10举例中,logtime 登录时间,类似 20120614123112的格式
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条)