oracle查询连续n天登录的用户
-- 查询连续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天登录的用户的更多相关文章
- oracle查询在当前数据库下当前用户拥有的表语句
1.查询表的数目: select count(*) from tabs select count(*) from user_tables 2.查询用户拥有哪些表: select * from tabs ...
- 【转】oracle查询用户表,函数,储存过程,
◆Oracle查询用户表空间:select * from user_all_tables ◆Oracle查询所有函数和储存过程:select * from user_source ◆Oracle查询所 ...
- Oracle查询用户权限
Oracle查询用户权限 -- 确定角色的权限select * from role_tab_privs ; 包含了授予角色的对象权限select * from role_ro ...
- oracle查询所有用户表的表名、主键名称、索引、外键等
1.查找表的所有索引(包括索引名,类型,构成列): select t.*,i.index_type from user_ind_columns t,user_indexes i where t.ind ...
- Oracle 数据库登录、用户解锁、改密码、创建用户授权操作
一.数据库登录1.常用账户: 管理员: sys主要练习操作用户: scott2.测试环境是否配置成功: 1.命令窗口 win+R -> cmd(以管理员身份运行) - > sqlplus ...
- oracle查询当前用户下所有的表,包括所有的字段
oracle查询当前用户下所有的表,包括所有的字段 背景: 前两天接到一个需求,做一个展示所有表名,表备注,表数据,表字段数,点击查看按钮查看字段名和注释,支持导出. 在Oracle中,可用使用视 ...
- Oracle查询用户所有表
https://blog.csdn.net/wssiqi/article/details/44617197 Oracle查询用户所有表 下面为您介绍的语句用于实现Oracle查询用户所有表,如果您 ...
- Oracle查询当前用户和当前用户下的所有表
转载自:http://blog.itpub.net/29485627/viewspace-1246317/ Oracle查询当前用户和当前用户下的所有表 (1)查询当前用户 SQL> show ...
- oracle查询当前用户名下所有表
select * from all_tables where owner='TEST': TEST为用户名,用户名必须是大写. 查看当前登录的用户的表: select table_name from ...
随机推荐
- 1.学习一下Angularjs的promisee
1.首先来了解一下promisee: 在谈论Promise之前我们要了解一下一些额外的知识:我们知道JavaScript语言的执行环境是“单线程”,所谓单线程,就是一次只能够执行一个任务,如果有多个任 ...
- Django框架-路由层
Django框架-路由层 一.URL配置(URLconf) 1.基本格式 from django.conf.urls import url urlpatterns = [ url(正则表达式, vie ...
- Linux实现树莓派3B的国密SM9算法交叉编译——(一)环境部署、简单测试与eclipse工程项目测试
这篇文章主要介绍了交叉编译的实现,包括环境部署,并简单测试交叉编译环境是否安装成功. 一.交叉编译 在一个平台上生成另一个平台上的可执行代码.为什么要大费周折的进行交叉编译呢?一句话:不得已而为之.有 ...
- 动手实现CapsNet系列——2 实现(未完待续)
执行后返回如下信息: Loading complete. Training started! [epoch 0][iter 0] loss: 0.8082, acc: 14.0000% (14/100 ...
- Spring - MVC - 修改 Java 类后, 触发重启
1. 概述 学习 Spring MVC 下, 如何可控的触发重启 2. 背景 学习 Spring 场景 有些时候, 改完类, 需要重启 之前有听说, Spring MVC 可以自动重启 于是想, 尝试 ...
- cJson 常见用法
cJson是一个非常轻量级的JSON数据解析和构建的oss. 可以很容易的的在C代码中构建一个JSON格式的字符串.也可以将JSON字符串转成cJson中定义的cJson object. 通常用在,手 ...
- ARM64架构下面安装mysql5.7.22
MySQL下载地址为: https://obs.cn-north-4.myhuaweicloud.com/obs-mirror-ftp4/database/mysql-5.7.27-aarch64.t ...
- Servlt入门
Servlt入门 java的两种体系结构 C/S (客户端/服务器)体系结构 通讯效率高且安全,但系统占用多 B/S (浏览器/服务器)体系结构 节约开发成本 C/S (客户端/服务器)体系结 ...
- MAC记住 git的用户名密码
问题:第一次使用MAC的git垃取代码时,连续输错密码.以为垃取不下来,就让同事用它的git账号和密码垃取了一次拉去成功了.之后我再配置git的用户名和密码设置称自己的.往后每次拉去和提交都显示同事的 ...
- ACM-ICPC实验室20.2.19测试-图论
B.Harborfan的新年拜访Ⅱ 就是一道tarjan缩点的裸题. 建图比较麻烦 以后遇到这种建图,先用循环把样例实现出来,再对着循环写建图公式 #include<bits/stdc++.h& ...