-- 查询连续3天登录的用户

1 先创建一个表,如下:

 create table USER_DATA
(
USER_ID NUMBER,
LOGIN_TIME DATE
);

2 插入用户登录数据:

 insert into user_data (USER_ID, LOGIN_TIME) values ('', to_date('21-07-2014', 'dd-mm-yyyy'));
insert into user_data (USER_ID, LOGIN_TIME) values ('', to_date('22-07-2014', 'dd-mm-yyyy'));
insert into user_data (USER_ID, LOGIN_TIME) values ('', to_date('24-07-2014', 'dd-mm-yyyy'));
insert into user_data (USER_ID, LOGIN_TIME) values ('', to_date('25-07-2014', 'dd-mm-yyyy'));
insert into user_data (USER_ID, LOGIN_TIME) values ('', to_date('21-07-2014', 'dd-mm-yyyy'));
insert into user_data (USER_ID, LOGIN_TIME) values ('', to_date('28-07-2014', 'dd-mm-yyyy'));
insert into user_data (USER_ID, LOGIN_TIME) values ('', to_date('29-07-2014', 'dd-mm-yyyy'));
insert into user_data (USER_ID, LOGIN_TIME) values ('', to_date('30-07-2014', 'dd-mm-yyyy'));
insert into user_data (USER_ID, LOGIN_TIME) values ('', to_date('21-07-2014', 'dd-mm-yyyy'));
insert into user_data (USER_ID, LOGIN_TIME) values ('', to_date('22-07-2014', 'dd-mm-yyyy'));
insert into user_data (USER_ID, LOGIN_TIME) values ('', to_date('23-07-2014', 'dd-mm-yyyy'));
insert into user_data (USER_ID, LOGIN_TIME) values ('', to_date('24-07-2014', 'dd-mm-yyyy'));
insert into user_data (USER_ID, LOGIN_TIME) values ('', to_date('26-07-2014', 'dd-mm-yyyy'));

3 查询连续3天登录的用户

思路:现有的数据里面已经是经过处理的,每个用户每天只有一条数据,并且登录时间是每天的零点,如果是真实的数据则进行trunc后就行,然后选择的时候,需要依据user_id和login_time进行排序,这样在外层选择时,rownm在每个用户按日志排序时是连续的,然后查询时用日志减去rownum,这样如果是连续的日期,其相减的结果就是一样的,然后根据此结果来判断是否是连续登录就行了,查询连续3天登录的用户id的具体代码如下:

 select distinct user_id
from
(
select b.user_id, b.d_temp, count(*)
from
(
select a.user_id, a.login_time - rownum d_temp
from
(
select t.*
from user_data t
order by t.user_id, t.login_time
)a
)b
group by b.user_id, b.d_temp
having count(*) >= 3
);

以上查询出来的结果就是至少连续登录3天的用户id了.

oracle查询连续n天登录的用户的更多相关文章

  1. oracle查询在当前数据库下当前用户拥有的表语句

    1.查询表的数目: select count(*) from tabs select count(*) from user_tables 2.查询用户拥有哪些表: select * from tabs ...

  2. 【转】oracle查询用户表,函数,储存过程,

    ◆Oracle查询用户表空间:select * from user_all_tables ◆Oracle查询所有函数和储存过程:select * from user_source ◆Oracle查询所 ...

  3. Oracle查询用户权限

    Oracle查询用户权限 -- 确定角色的权限select * from role_tab_privs ;              包含了授予角色的对象权限select * from role_ro ...

  4. oracle查询所有用户表的表名、主键名称、索引、外键等

    1.查找表的所有索引(包括索引名,类型,构成列): select t.*,i.index_type from user_ind_columns t,user_indexes i where t.ind ...

  5. Oracle 数据库登录、用户解锁、改密码、创建用户授权操作

    一.数据库登录1.常用账户: 管理员: sys主要练习操作用户: scott2.测试环境是否配置成功: 1.命令窗口 win+R -> cmd(以管理员身份运行) - > sqlplus ...

  6. oracle查询当前用户下所有的表,包括所有的字段

    oracle查询当前用户下所有的表,包括所有的字段 背景: ​ 前两天接到一个需求,做一个展示所有表名,表备注,表数据,表字段数,点击查看按钮查看字段名和注释,支持导出. 在Oracle中,可用使用视 ...

  7. Oracle查询用户所有表

    https://blog.csdn.net/wssiqi/article/details/44617197 Oracle查询用户所有表   下面为您介绍的语句用于实现Oracle查询用户所有表,如果您 ...

  8. Oracle查询当前用户和当前用户下的所有表

    转载自:http://blog.itpub.net/29485627/viewspace-1246317/ Oracle查询当前用户和当前用户下的所有表 (1)查询当前用户 SQL> show ...

  9. oracle查询当前用户名下所有表

    select * from all_tables where owner='TEST': TEST为用户名,用户名必须是大写. 查看当前登录的用户的表: select table_name from ...

随机推荐

  1. 1.学习一下Angularjs的promisee

    1.首先来了解一下promisee: 在谈论Promise之前我们要了解一下一些额外的知识:我们知道JavaScript语言的执行环境是“单线程”,所谓单线程,就是一次只能够执行一个任务,如果有多个任 ...

  2. Django框架-路由层

    Django框架-路由层 一.URL配置(URLconf) 1.基本格式 from django.conf.urls import url urlpatterns = [ url(正则表达式, vie ...

  3. Linux实现树莓派3B的国密SM9算法交叉编译——(一)环境部署、简单测试与eclipse工程项目测试

    这篇文章主要介绍了交叉编译的实现,包括环境部署,并简单测试交叉编译环境是否安装成功. 一.交叉编译 在一个平台上生成另一个平台上的可执行代码.为什么要大费周折的进行交叉编译呢?一句话:不得已而为之.有 ...

  4. 动手实现CapsNet系列——2 实现(未完待续)

    执行后返回如下信息: Loading complete. Training started! [epoch 0][iter 0] loss: 0.8082, acc: 14.0000% (14/100 ...

  5. Spring - MVC - 修改 Java 类后, 触发重启

    1. 概述 学习 Spring MVC 下, 如何可控的触发重启 2. 背景 学习 Spring 场景 有些时候, 改完类, 需要重启 之前有听说, Spring MVC 可以自动重启 于是想, 尝试 ...

  6. cJson 常见用法

    cJson是一个非常轻量级的JSON数据解析和构建的oss. 可以很容易的的在C代码中构建一个JSON格式的字符串.也可以将JSON字符串转成cJson中定义的cJson object. 通常用在,手 ...

  7. ARM64架构下面安装mysql5.7.22

    MySQL下载地址为: https://obs.cn-north-4.myhuaweicloud.com/obs-mirror-ftp4/database/mysql-5.7.27-aarch64.t ...

  8. Servlt入门

    Servlt入门 java的两种体系结构 C/S (客户端/服务器)体系结构  通讯效率高且安全,但系统占用多 B/S (浏览器/服务器)体系结构    节约开发成本 C/S (客户端/服务器)体系结 ...

  9. MAC记住 git的用户名密码

    问题:第一次使用MAC的git垃取代码时,连续输错密码.以为垃取不下来,就让同事用它的git账号和密码垃取了一次拉去成功了.之后我再配置git的用户名和密码设置称自己的.往后每次拉去和提交都显示同事的 ...

  10. ACM-ICPC实验室20.2.19测试-图论

    B.Harborfan的新年拜访Ⅱ 就是一道tarjan缩点的裸题. 建图比较麻烦 以后遇到这种建图,先用循环把样例实现出来,再对着循环写建图公式 #include<bits/stdc++.h& ...