-- 查询连续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. lamp与zabbix开机自启

    目录 1.控制httpd脚本 2.控制zabbix_server脚本 3.控制zabbix_agentd脚本 4.服务端lamp开机自动启动 5.客户端zabbix_agentd开机自动启动 1.控制 ...

  2. linux建立动态库的软链接

    复制动态库: /home/wmz/anaconda3/lib/ 删除原链接: 建立新链接: /home/wmz/anaconda3/lib/libstdc++.so. 问题的起源是,安装anacond ...

  3. Codeforces Round #618 (Div. 1)A(观察规律)

    实际上函数值为x&(-y) 答案仅和第一个数字放谁有关 #define HAVE_STRUCT_TIMESPEC #include <bits/stdc++.h> using na ...

  4. Linux shell sed 命令详解

    详细的sed命令详解,请参考https://my.oschina.net/u/3908182/blog/1921761 sed命令常见用途 查找关键词做全局替换 查找某行的关键词做替换 查找关键字所在 ...

  5. P & R 8

    Floorplan: 要做好floorplan需要掌握哪些知识跟技能? 通常,遇到floorplan问题,大致的debug步骤跟方法有哪些? 如何衡量floorplan的QA? T:Block lev ...

  6. 线上BUG定位神器(阿尔萨斯)-Arthas2019-0801

    1.下载这个jar 2.运行这个jar 3.选取你需要定位的问题应用进程 然后各种trace -j xx.xxx.xx.className methodName top -n 3 这个后面要补充去看, ...

  7. Java代码三级跳——表达式、语句和代码块

    Java代码三级跳—表达式.语句和代码块 表达式(expression):Java中最基本的一个运算.比如一个加法运算表达式.1+2是一个表达式,a+b也是. 语句(statement):类似于平时说 ...

  8. 在ios微信客户端遇到的坑,input等错位

    1.判断移动端设备 // 处理iOS 微信客户端弹窗状态下调起输入法后关闭输入法页面元素错位解决办法 var ua = window.navigator.userAgent.toLowerCase() ...

  9. opencv python:直线检测 与 圆检测

    霍夫直线变换介绍 霍夫圆检测 现实中: example import cv2 as cv import numpy as np # 关于霍夫变换的相关知识可以看看这个博客:https://blog.c ...

  10. opencv:Mat对象

    Mat对象:图像文件的内存数据对象 读取为 Mat 对象 读取图像位Mat对象,获取图像的相关信息 #include <opencv2/opencv.hpp> #include <i ...