189 8069 5689

oracle怎么随机抽样 oracle抽样查询

Oracle sql语句随机抽取一个表数据,要求:抽取数量可以给定,条件是分数字段满足100分

1、需要用到两个字符类函数instr和substr,具体用法介绍如下:

专注于为中小企业提供网站建设、做网站服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业韶山免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了成百上千企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。

函数:字符定位函数

instr

语法:instr(待处理的字符串,需要查找的字符,开始查找的起始位置,第n次出现)

返回值:字母所在的位置,没有返回

0;

函数:字符定位函数

substr

语法:substr('要切割的值',从第几个位置开始切割,切割几位);

返回值:截取的字符串。

2、该题实现步骤,以字段a内容为'武汉一一科技公司(2009年2月注销)'为例:

第一步:先从字段a的字段第一个字符往前找左括号'('

第一次出现的位置,如下:

select

instr('武汉一一科技公司(2009年2月注销)',

'(',

1,

1)

--

9

from

dual;

第二步:从字段第一个字符开始,一直找出左括号'('的前一位就行,如下:

select

substr('武汉一一科技公司(2009年2月注销)',

1,

instr('武汉一一科技公司(2009年2月注销)',

'(',

1,

1)

-

1)

from

dual;

注:如果某某公司名称本身可能含有括号的话,建议从最后一个字符倒着往回找左括号出现第一次的位置,即

select

instr('武汉一一科技公司(2009年2月注销)',

'(',

-1,

1)

--

9

from

dual;

3、最终答案

select

select

substr(a,

1,

instr(a,

'(',

-1,

1)

-

1)

from

table

;

oracle随机抽取百分之五十的函数

没看懂你的抽取50%是什么意思,可以参考如下方案:

1:随机抽取前50条记录:

select *

from (select * from scott.emp order by dbms_random.random)

where rownum 51

2:随机取1~100之间的数据:

select dbms_random.value(1,100) from dual

用oracle从每个分类中随机抽取10%的数据怎么实现

select col1,col2,type

from (select col1,col2,type,rn,max() over(partitio by type) as rn_max

from (select col1,col2,type,row_number() over (paritition by type order by dbms_random.value) as rn

from tablename ) t

) p

where rn/rn_max=0.1

;

sample不确定能不能用分析函数,但是主要是用来全表取sample的

ORACLE怎么做随机抽样

VALUE 函数的第一种形式返回一个大于或等于 0 且小于 1 的随机数;第二种形式返回一个大于或等于 LOW ,小于 HIGH 的随机数。下面是其用法的一个示例:

SQL select dbms_random.value, dbms_random.value(0,18) from dual;

VALUE DBMS_RANDOM.VALUE(0,18)

---------- -----------------------

0.05863200 12.9840987851451

求如何在oracle中分类抽取随机记录

--如果员工月度业务单小于3条的员工和部门

select * from talbe_name where 员工 in(

select 部门,员工,count(1) from table_name

where 结单时间开始时间

and 结单时间结束时间

group by 部门,员工

having count(1)3)

and 结单时间开始时间

and 结单时间结束时间;

--如果员工月度业务单大于3条的员工,随机抽取3条单子

select * from

(select t.*,rownum from talbe_name where 员工 in(

select 部门,员工,count(1) from table_name

where 结单时间开始时间

and 结单时间结束时间

group by 部门,员工

having count(1)3)

and 结单时间开始时间

and 结单时间结束时间

order by dbms_random.value)

where rownum3;


分享标题:oracle怎么随机抽样 oracle抽样查询
转载来于:http://cdxtjz.cn/article/doooopj.html

其他资讯