查询用户的二次登陆

leyan728 2010-03-16 01:19:20
id 编号 uid 用户ID username 用户名 loginip 登录IP logintime 登录时间 serverid 服务器ID
775389 118096 ycleyan 61.160.250.114 1262584986 sg13
801833 118096 ycleyan 58.50.160.175 1262663759 平台
833561 118096 ycleyan 58.50.166.221 1262762490 平台
834525 118096 ycleyan 58.50.166.221 1262764847 平台
852234 118096 ycleyan 61.160.249.61 1262830802 sg14
852323 118096 ycleyan 61.160.249.61 1262830985 sg14
852353 118096 ycleyan 61.160.249.61 1262831068 sg14
852404 118096 ycleyan 61.160.249.61 1262831106 sg14

登陆时间是时间戳格式的.
如何查询用户的二次登陆情况.就是说查询那些用户连续2天以上都有登录记录

...全文
141 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
leyan728 2010-03-16
  • 打赏
  • 举报
回复
楼上大哥,我知道了,我待会整理一下.

因为刚才发的比较急,就没有整理.
ACMAIN_CHM 2010-03-16
  • 打赏
  • 举报
回复
猜测如下!
select count(distinct username)
from table1 t
WHERE FROM_UNIXTIME(logintime) BETWEEN '2010-03-09' AND '2010-03-15'
and exists (select 1 from table1 where username=t.username and date(FROM_UNIXTIME(logintime))=date(FROM_UNIXTIME(t.logintime+86400)))



建议你给出你的正确结果!
(不要高估你的汉语表达能力或者我的汉语理解能力)
建议你列出你的表结构,并提供测试数据以及基于这些测试数据的所对应正确结果。
参考一下这个贴子的提问方式http://topic.csdn.net/u/20091130/20/8343ee6a-417c-4c2d-9415-fa46604a00cf.html

1. 你的 create table xxx .. 语句
2. 你的 insert into xxx ... 语句
3. 结果是什么样,(并给以简单的算法描述)
4. 你用的数据库名称和版本(经常有人在MS SQL server版问 MySQL)

这样想帮你的人可以直接搭建和你相同的环境,并在给出方案前进行测试,避免文字描述理解上的误差。

leyan728 2010-03-16
  • 打赏
  • 举报
回复
我期待的是统计某一时间段某一个服务器登录天数超过2天的用户数
WWWWA 2010-03-16
  • 打赏
  • 举报
回复
用你的数据,正确结果是什么
ACMAIN_CHM 2010-03-16
  • 打赏
  • 举报
回复
你的期望的结果是什么? 一个数字?还是一个名单?
leyan728 2010-03-16
  • 打赏
  • 举报
回复
SELECT count( 1 ) AS num
FROM (
SELECT username, serverid, COUNT( * ) AS b
FROM user_login_log
WHERE FROM_UNIXTIME( logintime, '%Y-%m-%d' )
BETWEEN '2010-03-09'
AND '2010-03-15'
AND serverid = 'sg18'
GROUP BY username
HAVING COUNT( * ) >=2
)a

憋了半天,憋出这么一个sql语句.
不知道数据是否正确,还在核实.

各位帮我看看.或者优化一下!
ACMAIN_CHM 2010-03-16
  • 打赏
  • 举报
回复
先随便猜一下。估计是你想要的。

查询那些用户连续2天以上都有登录记录
select distinct username
from table1 t
where exists (select 1 from table1 where username=t.username and date(FROM_UNIXTIME(logintime))=date(FROM_UNIXTIME(t.logintime+86400)))
vipper23 2010-03-16
  • 打赏
  • 举报
回复
 select distinct a.uid,a.username from login a , login b where a.uid=b.uid and b.logintime-a.logintime between 86400 and 172800;
ACMAIN_CHM 2010-03-16
  • 打赏
  • 举报
回复

建议你列出你的表结构,并提供测试数据以及基于这些测试数据的所对应正确结果。
参考一下这个贴子的提问方式http://topic.csdn.net/u/20091130/20/8343ee6a-417c-4c2d-9415-fa46604a00cf.html

1. 你的 create table xxx .. 语句
2. 你的 insert into xxx ... 语句
3. 结果是什么样,(并给以简单的算法描述)
4. 你用的数据库名称和版本(经常有人在MS SQL server版问 MySQL)

这样想帮你的人可以直接搭建和你相同的环境,并在给出方案前进行测试,避免文字描述理解上的误差。

56,867

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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