select-oracle随机数有时候取两个,有时候是1个,为什么

问题描述

oracle随机数有时候取两个,有时候是1个,为什么

SQL如下:select *
from (select employee_id,
first_name,
salary,
hire_date,
ROW_NUMBER() OVER(PARTITION BY EXTRACT(YEAR FROM HIRE_DATE) ORDER BY EMPLOYEE_ID) RN
FROM EMPLOYEES
WHERE HIRE_DATE IS NOT NULL
AND EXTRACT(YEAR FROM HIRE_DATE) IN (2001,2002,2003))
WHERE RN =trunc(DBMS_RANDOM.value(1,4));
,结果如图(图示为2个的情况),求教大神,为什么????

解决方案

Oracle 取随机数
Oracle 取随机数
Oracle 取随机数

解决方案二:

WHERE RN =trunc(DBMS_RANDOM.value(1,4)); 这个应该类似全表扫,所以每条数据都会计算一次trunc(DBMS_RANDOM.value(1,4));

时间: 2024-11-20 14:50:35

select-oracle随机数有时候取两个,有时候是1个,为什么的相关文章

ORACLE随机数DBMS_RANDOM包_oracle

简单得说,通过dbms_random包调用随机数的方法大致有4种: 1.dbms_random.normal     这个函数不带参数,能返回normal distribution的一个number类型,所以基本上随机数会在-1到1之间.     简单测试了一下,产生100000次最大能到5左右: Sql代码 declare i number:=; j number:=; begin for k in .. loop i:= dbms_random.normal; if i > j then j

关于oracle 同一行数据 两个时间段数据语句问题

问题描述 关于oracle 同一行数据 两个时间段数据语句问题 各位好,目前对一个旧系统改造,从sql 改造为 orcle时,遇到了一个问题,原先的sql语句select Count(*) from yd where (BeginDate + BeginTime<=(('2015-01-28')+('10:00:00'))) and (EndDate + EndTime>(('2015-01-28')+('10:00:00'))) and (zyID='32') 时是可以查出来语句的,但是改为

重复值-oracle 用rowid 取重复的sql语句怎么理解

问题描述 oracle 用rowid 取重复的sql语句怎么理解 这个SQL语句该怎么理解? SELECT * FROM XUTEST X WHERE ROWID!=(SELECT MAX(ROWID) FROM XUTEST Y WHERE y.SUPID=x.SUPID) 解决方案 rowid是表中每条记录的唯一ID.假设XUTEST 表中有3条记录,SUPID为1,2,2 ROWID分别为r1r2r3那么sql相当于 SELECT * FROM XUTEST X WHERE ROWID!=

oracle中如何获取两个日期之间指定星期的日期是多少

问题描述 oracle中如何获取两个日期之间指定星期的日期是多少 如题,现在用户选择了一个起始日期和截止日期, 也选择了几个星期, 那么如何得到他选择的这几个星期的日期分别是多少? 解决方案 获取两个日期之间星期X的日期列表获取两个日期之间的日期间隔获取指定日期是星期几 解决方案二: 我的思路是这样的 1.写个方法,获取 起始,截止 日期之间 所有的日期 2.oracle提供了获取指定日期是星期几 的 函数 把选定的星期作为条件即可 解决方案三: DECLARE v_date date; v_n

怎样写SQL语句取两个日期之间的年月作为列名,两个日期是变量的

问题描述 怎样写SQL语句取两个日期之间的年月作为列名,两个日期是变量的比如 我取2000-01 到2011-12之间的年月在 test表里 id name1张山2张三3李四弄成这样id name 2000-01 2000-01 2000-01 2000-01 2000-01~~~2011-06 1张山NULLNULLNULLNULLNULL NULL2张三NULLNULLNULLNULLNULL NULL3李四NULLNULLNULLNULLNULL NULL我用这种方法写,不过它报错.dec

hdfs-cdh hadoop mapreduce 运行时的问题:(有时候会出现,有时候不出现,急求大神帮助)

问题描述 cdh hadoop mapreduce 运行时的问题:(有时候会出现,有时候不出现,急求大神帮助) 15/10/08 08:49:13 INFO mapreduce.Job: Job job_1419225162729_18465 running in uber mode : false 15/10/08 08:49:13 INFO mapreduce.Job: map 0% reduce 0% 15/10/08 08:49:13 INFO mapreduce.Job: Job jo

为什么会有两个日期了-oracle 表合并 后有两个关键字

问题描述 oracle 表合并 后有两个关键字 select * from ((select t_date,count(*) 胜 from t group by t_status,t_date having T_STATUS='胜') a inner join (select t_date,count(*) 负 from t group by t_status,t_date having T_STATUS='负') b on a.t_date=b.t_date) ; 合并后成 1 2015-5-

restAPI中提供的demo有时候运行没有问题,有时候又会抛异常,代码都没动

问题描述 restAPI中提供的demo有时候运行没有问题,有时候又会抛异常,代码都没动  获取token HttpClient.execute(httppost)就会捕获异常 ,问题是有时候测试又没问题 解决方案 抛出的异常是什么? 贴出来看看解决方案二:直接运行demo main方法中的实例 在获取token时候 返回的,tokenResponse对象为HTTP/1.0 302 Moved Temporarily [Location: http://10.16.248.2/auth_entr

使用epoll出现问题,偶然性,有时候有问题,有时候又是正常的。

问题描述 使用epoll出现问题,偶然性,有时候有问题,有时候又是正常的. 我用一个线程监听,如果有数据可读,就通知另一个线程去读.下面是监听线程的代码.出现的问题就是三次握手后,服务端就自动发送了一个FIN报文,接着客户端发送数据就会收到RST void ListenThread::run() { int max_epoll=pconf->value("max_connect","1024").toInt(); short listen_port=pconf