oracle求查询连续三天的数据
--生成模拟数据
DROP TABLE t PURGE;
CREATE TABLE t AS
(SELECT TRUNC(SYSDATE+LEVEL) 日期,
round(dbms_random.value(0,2)) 生产时间
FROM DUAL
CONNECT BY LEVEL<=60);
--查询
SELECT MIN(日期) 开始日期, MAX(日期) 结束日期, COUNT(*) 连续天数
FROM (SELECT 生产时间,
日期,
ROW_NUMBER() OVER(ORDER BY 日期) 序号,
COUNT(1) OVER(PARTITION BY 生产时间 ORDER BY 日期) 按生产时间分组小计
FROM t)
WHERE 生产时间 = 0
GROUP BY 生产时间, 序号 - 按生产时间分组小计
HAVING COUNT(*) > 1
ORDER BY 1;
直接用查询就可以得到你要的结果:
select ID,NAME,VISIT_TIME from ( select ID,NAME,VISIT_TIME ,CNT ,max(CNT) over () MX from ( select ID,NAME,VISIT_TIME ,count(MINDATE) over (partition by MINDATE) CNT from ( select ID,NAME,VISIT_TIME ,MINDATE from ( select ID,NAME,VISIT_TIME ,row_number() over (order by VISIT_TIME) RN from VISTER t where t.NAME = '张三' ) t model dimension by (t.RN) measures(ID,NAME,VISIT_TIME,trunc(VISIT_TIME) VISIT_DATE,trunc(t.VISIT_TIME) as MINDATE) rules upsert all ( MINDATE[any] = case when VISIT_DATE[currentv()] - VISIT_DATE[currentv()-1] <= 1 then MINDATE[currentv()-1] else VISIT_DATE[currentv()] end ) order by VISIT_TIME ) ) ) where CNT = MX
思路这样,查询所有reptype最大的那三条WORKDATE信息,并且YESTERDAYWORKINGTIME>2,然后将这三条数据中max(WORKDATE)-MIN(WORKDATE)=2的reptype的数据打印出来。
需要嵌套查询。
如果是连续三天的数据中最大的那三条思路要变一下。
fdeg烦得很
reptype需要一致,才能算作workdate连续工作嘛?还是只要表中的workdate连续就可以了?还有你说的明细是什么?明细最大是怎么判断的?
西北地区基于3S技术野外地质工作管理与服务体系构建
同时可利用中心结点丰富的数据资源,为野外工作人员提供查询服务,为突发事件应急处置的管理与决策提供数据支持。 GSIGird 北斗应急态势保障系统安装过程分两步实施:北斗信息数据库安装、北斗应急态势保障系统安装。安装与部署过程如下。 1.北斗信息数据库安装 北斗信息数据库采用Oracle数据库,数据库版本为O racle10.2.0。
怎么用linux命令连接racle数据库
2、切换到Oracle用户之后,我们登录到到sqlplus,使用dba权限登录到sqlplus。在sqlplus中,我们使用conn连接一下我们具体想要操作的数据库用户。命令:conn username\/password,示connected表示连接成功;3、在SQL>中输入想要进行操作的sql语句,这里我们举个简单的例子,以一个单表查询为例进行演示:sql语句:...
爱新觉罗飘猴头: 大概这个意思:select floor((time - to_date('1900-01-01','yyyy-mm-dd'))/3),type,count(1) from test group by floor((time - to_date('1900-01-01','yyyy-mm-dd'))/3),type
凌河区15230496134: oracle在查询本月第三天怎么写 - ?
爱新觉罗飘猴头: select trunc(sysdate,'mm')+2 from dual ;
凌河区15230496134: oracle里如何查询一段时间内的数据,我拿到的是日期字符串 - ?
爱新觉罗飘猴头: 理论上BETWEEN AND 应该取的是>= 和 <= 如果你的字段是DATE类型,最好看一下2011-6-30这条记录的日期是否包括时,分,秒,如果包括的话.就不会取到.
凌河区15230496134: SQL查询日期为连续的数据 - ?
爱新觉罗飘猴头: /*求连续旷工三天以上的数据*/ declare @t table(name varchar(10), [date] datetime,n int default(1)) insert into @t(name,date) select '张三','2011.09.01' union select '张三','2011.09.08' union select '张三','2011.09.09' union select '张三','2011....
凌河区15230496134: 如何用SQL查找3天的数据,一个月的,半年的数据 当天的为 DATEDIFF(day, HY - Adddate, GETDATE())=0?
爱新觉罗飘猴头: 前3天: DATEDIFF(day, HY_Adddate, GETDATE())=3 同一个月: DATEDIFF(month, HY_Adddate, GETDATE())=0 上一个月: DATEDIFF(month, HY_Adddate, GETDATE())=1 半年前: DATEDIFF(month, HY_Adddate, GETDATE())=6 同一年:DATEDIFF(year, HY_Adddate, GETDATE())=0 类似用法,举一反三,希望对你有帮助
凌河区15230496134: SQL语句:用一条语句求同一张表中3天中各自的数据.?
爱新觉罗飘猴头: select IDNAME,"DATE",count(*) from tablenamewhere TO_NUMBER(TO_CHAR(sysdate,'DD'),99) - TO_NUMBER(TO_CHAR("DATE",'DD'),99) <=3and TO_NUMBER(TO_CHAR(sysdate,'DD'),99) - TO_NUMBER(TO_CHAR("DATE",'...
凌河区15230496134: oracle 如何查询30天以内的数据? - ?
爱新觉罗飘猴头: 以当前的时间为准.分三种情况,一种是以当前时间为中心,算前后共30天;一种是以当前时间为准,算后30天;一种是以当前时间为准,算前30天. 前后共30天: select * from 表名 where 时间字段 between to_date(sysdate-15,'yyyy-mm-dd') ...
凌河区15230496134: oracle 查询每天写入的数据 - ?
爱新觉罗飘猴头: 解决方案如下:创建已将日志表log,用于记录当天记录,log中有时间列,有id列,用于定位数据库中对应的表中的主键.然后建立insert触发器,每次插入数据时,生成log表.查询数据时,使用log表关联被查询表,通过log中的时间列进行过滤,从而实现按指定日期查询的目的.不建议使用比较,使用比较是需要参照表的,你现在应该是做不到.而且比较的性能并不高.
凌河区15230496134: 如何查询Oracle数据库的操作日志 - ?
爱新觉罗飘猴头: 如何查询Oracle数据库的操作日志方法1:使用LogMiner工具 优点:可以完全挖掘日志内容,找出所有执行过的SQL语句 缺点: 1. 如果没有启用归档日志,则只能对联机日志进行挖掘 2. 需要掌握LogMiner的用法访法2:查看HIST视图 优点:...
凌河区15230496134: oracle如何用sql语句调取连续n天生产时间为0的数据 - ?
爱新觉罗飘猴头: --生成模拟数据 DROP TABLE t PURGE; CREATE TABLE t AS(SELECT TRUNC(SYSDATE+LEVEL) 日期,round(dbms_random.value(0,2)) 生产时间 FROM DUAL CONNECT BY LEVEL--查询 SELECT MIN(日期) 开始日期, MAX(日期) ...