Oracle统计学函数-大数据分析介绍

合集下载

ORACLE_分析函数大全

ORACLE_分析函数大全

ORACLE_分析函数大全Oracle分析函数是一种高级SQL函数,它可以在查询中实现一系列复杂的分析操作。

这些函数可以帮助我们在数据库中执行各种数据分析和报表生成任务。

本文将介绍Oracle数据库中的一些常用分析函数。

1.ROW_NUMBER函数:该函数为查询结果中的每一行分配一个唯一的数字。

可以用它对结果进行排序或分组。

例如,可以使用ROW_NUMBER函数在结果集中为每个员工计算唯一的编号。

2.RANK和DENSE_RANK函数:这两个函数用于计算结果集中每个行的排名。

RANK函数返回相同值的行具有相同的排名,并且下一个排名值将被跳过。

DENSE_RANK函数类似,但是下一个排名值不会被跳过。

G和LEAD函数:LAG函数返回结果集中指定列的前一个(上一个)行的值,而LEAD函数返回后一个(下一个)行的值。

这些函数通常用于计算增长率或发现趋势。

4.FIRST和LAST函数:这两个函数用于返回结果集中分组的第一个和最后一个行的值。

可以与GROUPBY子句一起使用。

5.CUME_DIST函数:该函数用于计算给定值的累积分布。

它返回值的累积分布在结果集中的位置(百分比)。

6.PERCENT_RANK函数:该函数用于计算结果集中每个行的百分位数排名。

它返回值的百分位数排名(0到1之间的小数)。

7. NTILE函数:该函数用于将结果集分成指定数量的桶(Bucket),并为每个行分配一个桶号。

通常用于将数据分组为更小的块。

8.LISTAGG函数:该函数将指定列的值连接成一个字符串,并使用指定的分隔符分隔每个值。

可以用它将多个值合并在一起形成一个字符串。

9.AVG、SUM、COUNT和MAX/MIN函数:这些是常见的聚合函数,可以在分析函数中使用。

它们用于计算结果集中的平均值、总和、计数和最大/最小值。

以上只是Oracle数据库中的一些常用分析函数。

还有其他一些分析函数,如PERCENTILE_CONT、PERCENTILE_DISC等可以用于更高级的分析计算。

ORACLE统计函数大全

ORACLE统计函数大全

【一】、Oracle常用的统计函数Avg(x):求一组行中列x值的平均值count(x):求一组行中列x值的非空行数count(*):求一组行的总行数max(x):求一组行中列x值的最大值min(x):求一组行中列x值的最小值stddev(x):求一组行中列x值的标准差sum(x):求一组行中列x值的总和variance(x):求一组行中列x值的方差【二】、group by与统计函数使用上面介绍的函数时可以使用也可以不使用group by ,但在使用group by时,未在group by部分用到的列在select 部分出现时必须使用统计函数,如按角色统计平均年龄Select user_name,avg(age) from usersGroup by role_id; ×Select count(user_name),avg(age) from usersGroup by role_id√【三】、用having字句规定统计条件having 子句的作用类似于where子句,只不过where 子句针对单个行,而having子句针对的是统计结果,一般和统计的函数搭配使用。

Having子句后必须为前面select后面的子部分,或是group by 后面的字段select count(uer_name),avg(age) from users group by role_id having role_id>20; ×select count(uer_name),avg(age) from users group by role_id having avg(age)>20; √【四】其他oracle常用函数Decode(column1,value1,output1,value2,output2,…..)如果column1 有一个值为value1那么将会用output1 来代替当前值,如果column1 的值为value2 那么就用OUTPUT2 来代替当前值,如果column1 中哪两个值都不是,那么就会用OUTPUT3 来代替当前值Select decode(age,10,7,9,6,3),user_name from users;SQL中的单记录函数1.ASCII返回与指定的字符对应的十进制数;SQL> select ascii(’A’) A,ascii(’a’) a,ascii(’0’) zero,ascii(’ ’) space from dual;A A ZERO SPACE--------- --------- --------- ---------65 97 48 322.CHR给出整数,返回对应的字符;SQL> select chr(54740) zhao,chr(65) chr65 from dual;ZH C-- -赵 A3.CONCAT连接两个字符串;SQL> select concat(’010-’,’88888888’)||’转23’ 高乾竞电话from dual;高乾竞电话----------------************转234.INITCAP返回字符串并将字符串的第一个字母变为大写;SQL> select initcap(’smith’) upp from dual;UPP-----Smith5.INSTR(C1,C2,I,J)在一个字符串中搜索指定的字符,返回发现指定的字符的位置;C1 被搜索的字符串C2 希望搜索的字符串I 搜索的开始位置,默认为1J 出现的位置,默认为1SQL> select instr(’oracle traning’,’ra’,1,2) instring from dual;INSTRING---------96.LENGTH返回字符串的长度;SQL> select name,length(name),addr,length(addr),sal,length(to_char(sal)) from gao.nchar_tst; NAME LENGTH(NAME) ADDR LENGTH(ADDR) SAL LENGTH(TO_CHAR(SAL))------ ------------ ---------------- ------------ --------- --------------------高乾竞 3 北京市海锭区6 9999.99 77.LOWER返回字符串,并将所有的字符小写SQL> selec t lower(’AaBbCcDd’)AaBbCcDd from dual;AABBCCDDaabbccdd8.UPPER返回字符串,并将所有的字符大写SQL> select upper(’AaBbCcDd’) upper from dual;UPPER--------AABBCCDD9.RPAD和LPAD(粘贴字符)RPAD 在列的右边粘贴字符LPAD 在列的左边粘贴字符SQL> select lpad(rpad(’gao’,10,’*’),17,’*’)from dual;LPAD(RPAD(’GAO’,1-----------------*******gao*******不够字符则用*来填满10.LTRIM和RTRIMLTRIM 删除左边出现的字符串RTRIM 删除右边出现的字符串SQL> select ltrim(rtrim(’ gao qian jing ’,’ ’),’ ’) from dual;LTRIM(RTRIM(’-------------gao qian jing11.SUBSTR(string,start,count)取子字符串,从start开始,取count个SQL> select substr(’130****8888’,3,8)from dual;SUBSTR(’--------0888888812.REPLACE(’string’,’s1’,’s2’)string 希望被替换的字符或变量s1 被替换的字符串s2 要替换的字符串SQL> select replace(’he love you’,’he’,’i’) from d ual;REPLACE(’H----------i love you13.SOUNDEX返回一个与给定的字符串读音相同的字符串SQL> create table table1(xm varchar(8));SQL> insert into table1 values(’weather’);SQL> insert into table1 values(’wether’);SQL> insert into table1 values(’gao’);SQL> select xm from table1 where soundex(xm)=soundex(’weather’);--------weatherwether14.TRIM(’s’ from ’string’)LEADING 剪掉前面的字符TRAILING 剪掉后面的字符如果不指定,默认为空格符15.ABS返回指定值的绝对值SQL> select abs(100),abs(-100) from dual; ABS(100) ABS(-100)--------- ---------100 10016.ACOS给出反余弦的值SQL> select acos(-1) from dual;ACOS(-1)---------3.141592717.ASIN给出反正弦的值SQL> select asin(0.5) from dual;ASIN(0.5)---------.5235987818.ATAN返回一个数字的反正切值SQL> select atan(1) from dual;ATAN(1)---------.7853981619.CEIL返回大于或等于给出数字的最小整数SQL> select ceil(3.1415927) from dual; CEIL(3.1415927)---------------420.COS返回一个给定数字的余弦SQL> select cos(-3.1415927) from dual; COS(-3.1415927)----------------121.COSH返回一个数字反余弦值SQL> select cosh(20) from dual;COSH(20)---------24258259822.EXP返回一个数字e的n次方根SQL> select exp(2),exp(1) from dual;EXP(2) EXP(1)--------- ---------7.3890561 2.718281823.FLOOR对给定的数字取整数SQL> select floor(2345.67) from dual;FLOOR(2345.67)--------------234524.LN返回一个数字的对数值SQL> select ln(1),ln(2),ln(2.7182818) from dual;LN(1) LN(2) LN(2.7182818)--------- --------- -------------0 .69314718 .9999999925.LOG(n1,n2)返回一个以n1为底n2的对数SQL> select log(2,1),log(2,4) from dual;LOG(2,1) LOG(2,4)--------- ---------0 226.MOD(n1,n2)返回一个n1除以n2的余数SQL> select mod(10,3),mod(3,3),mod(2,3) from dual; MOD(10,3) MOD(3,3) MOD(2,3)--------- --------- ---------1 0 227.POWER返回n1的n2次方根SQL> select power(2,10),power(3,3) from dual; POWER(2,10) POWER(3,3)----------- ----------1024 2728.ROUND和TRUNC按照指定的精度进行舍入SQL> select round(55.5),round(-55.4),trunc(55.5),trunc(-55.5) from dual; ROUND(55.5) ROUND(-55.4) TRUNC(55.5) TRUNC(-55.5)----------- ------------ ----------- ------------56 -55 55 -5529.SIGN取数字n的符号,大于0返回1,小于0返回-1,等于0返回0SQL> select sign(123),sign(-100),sign(0) from dual;SIGN(123) SIGN(-100) SIGN(0)--------- ---------- ---------1 -1 030.SIN返回一个数字的正弦值SQL> select sin(1.57079) from dual;SIN(1.57079)------------131.SIGH返回双曲正弦的值SQL> select sin(20),sinh(20) from dual;SIN(20) SINH(20)--------- ---------.91294525 24258259832.SQRT返回数字n的根SQL> select sqrt(64),sqrt(10) from dual;SQRT(64) SQRT(10)--------- ---------8 3.162277733.TAN返回数字的正切值SQL> select tan(20),tan(10) from dual;TAN(20) TAN(10)--------- ---------2.2371609 .6483608334.TANH返回数字n的双曲正切值SQL> select tanh(20),tan(20) from dual;TANH(20) TAN(20)--------- ---------1 2.237160935.TRUNC按照指定的精度截取一个数SQL> select trunc(124.1666,-2) trunc1,trunc(124.16666,2) from dual;TRUNC1 TRUNC(124.16666,2)--------- ------------------100 124.1636.ADD_MONTHS增加或减去月份SQL> select to_char(add_months(to_date(’199912’,’yyyymm’),2),’yyyymm’) from dual;TO_CHA------200002SQL> s elect to_char(add_months(to_date(’199912’,’yyyymm’),-2),’yyyymm’) from dual;TO_CHA------199910ST_DAY返回日期的最后一天SQL> select to_char(sysdate,’yyyy.mm.dd’),to_char((sysdate)+1,’yyyy.mm.dd’) from dual;TO_CHAR(SY TO_CHAR((S---------- ----------2004.05.09 2004.05.10SQL> select last_day(sysdate) from dual;LAST_DAY(S----------31-5月-0438.MONTHS_BETWEEN(date2,date1)给出date2-date1的月份SQL> select months_between(’19-12月-1999’,’19-3月-1999’) mon_between from dual;MON_BETWEEN-----------9SQL>selectmonths_between(to_date(’2000.05.20’,’yyyy.mm.dd’),to_date(’2005.05.20’,’yyyy.mm.dd’)) mon_betw from dual; MON_BETW----------6039.NEW_TIME(date,’this’,’that’)给出在this时区=other时区的日期和时间SQL> select to_char(sysdate,’yyyy.mm.dd hh24:mi:ss’) bj_time,to_char(new_time2 (sysdate,’PDT’,’GMT’),’yyyy.mm.dd hh24:mi:ss’) los_angles from dual;BJ_TIME LOS_ANGLES------------------- -------------------2004.05.09 11:05:32 2004.05.09 18:05:32给出日期date和星期x之后计算下一个星期的日期S QL> select next_day(’18-5月-2001’,’星期五’) next_day from dual; NEXT_DAY----------25-5月-0141.SYSDATE用来得到系统的当前日期SQL> select to_char(sysdate,’dd-mm-yyyy day’) from dual;TO_CHAR(SYSDATE,’-----------------09-05-2004 星期日trunc(date,fmt)按照给出的要求将日期截断,如果fmt=’mi’表示保留分,截断秒SQL> select to_char(trunc(sysdate,’hh’),’yyyy.mm.dd hh24:mi:ss’) hh,2 to_char(trunc(sysdate,’mi’),’yyyy.mm.dd hh24:mi:ss’) hhmm from dual; HH HHMM------------------- -------------------2004.05.09 11:00:00 2004.05.09 11:17:0042.CHARTOROWID将字符数据类型转换为ROWID类型SQL> select rowid,rowidtochar(rowid),ename from scott.emp;ROWID ROWIDTOCHAR(ROWID) ENAME------------------ ------------------ ----------AAAAfKAACAAAAEqAAA AAAAfKAACAAAAEqAAA SMITH AAAAfKAACAAAAEqAAB AAAAfKAACAAAAEqAAB ALLEN AAAAfKAACAAAAEqAAC AAAAfKAACAAAAEqAAC WARD AAAAfKAACAAAAEqAAD AAAAfKAACAAAAEqAAD JONES43.CONVERT(c,dset,sset)将源字符串sset从一个语言字符集转换到另一个目的dset字符集SQL> select convert(’strutz’,’we8hp’,’f7dec’) "conversion" from dual; conver------strutz44.HEXTORAW将一个十六进制构成的字符串转换为二进制45.RAWTOHEXT将一个二进制构成的字符串转换为十六进制46.ROWIDTOCHAR将ROWID数据类型转换为字符类型47.TO_CHAR(date,’format’)SQL> select to_char(sysdate,’yyyy/mm/dd hh24:mi:ss’) from dual;TO_CHAR(SYSDATE,’YY-------------------2004/05/09 21:14:41将字符串转化为ORACLE中的一个日期49.TO_MULTI_BYTE将字符串中的单字节字符转化为多字节字符SQL> select to_multi_byte(’高’) from dual;TO--高50.TO_NUMBER将给出的字符转换为数字SQL> select to_number(’1999’) year from dual;YEAR---------199951.BFILENAME(dir,file)指定一个外部二进制文件SQL>insert into file_tb1 values(bfilename(’lob_dir1’,’image1.gif’));52.CONVERT(’x’,’desc’,’source’)将x字段或变量的源source转换为descSQL> select sid,serial#,username,decode(command,2 0,’none’,3 2,’insert’,4 3,5 ’select’,6 6,’update’,7 7,’delete’,8 8,’drop’,9 ’other’) cmd from v$session where type!=’background’;SID SERIAL# USERNAME CMD--------- --------- ------------------------------ ------1 1 none2 1 none3 1 none4 1 none5 1 none6 1 none7 1275 none8 1275 none9 20 GAO select10 40 GAO none53.DUMP(s,fmt,start,length)DUMP函数以fmt指定的内部数字格式返回一个VARCHAR2类型的值SQL> col global_name for a30SQL> col dump_string for a50SQL> set lin 200SQL> select global_name,dump(global_name,1017,8,5) dump_string from global_name; GLOBAL_NAME DUMP_STRING------------------------------ --------------------------------------------------ORACLE.WORLD Typ=1 Len=12 CharacterSet=ZHS16GBK: W,O,R,L,D54.EMPTY_BLOB()和EMPTY_CLOB()这两个函数都是用来对大数据类型字段进行初始化操作的函数55.GREATEST返回一组表达式中的最大值,即比较字符的编码大小.SQL> select greatest(’AA’,’AB’,’AC’) from dual;GR--ACSQL> select greatest(’啊’,’安’,’天’) from dual;GR--天56.LEAST返回一组表达式中的最小值SQL> select least(’啊’,’安’,’天’) from dual;LE--啊57.UID返回标识当前用户的唯一整数SQL> show userUSER 为"GAO"SQL> select username,user_id from dba_users where user_id=uid;USERNAME USER_ID------------------------------ ---------GAO 25ER返回当前用户的名字SQL> select user from dual;USER------------------------------GAOEREVN返回当前用户环境的信息,opt可以是:ENTRYID,SESSIONID,TERMINAL,ISDBA,LABLE,LANGUAGE,CLIENT_INFO,LANG,VSIZE ISDBA 查看当前用户是否是DBA如果是则返回trueSQL> select userenv(’isdba’) from dual;USEREN------FALSESQL> select userenv(’isdba’) from dual; USEREN------TRUESESSION返回会话标志SQL> select userenv(’sessionid’) from dual; USERENV(’SESSIONID’)--------------------152ENTRYID返回会话人口标志SQL> select userenv(’entryid’) from dual; USERENV(’ENTRYID’)------------------INSTANCE返回当前INSTANCE的标志SQL> select userenv(’instance’) from dual; USERENV(’INSTANCE’)-------------------1LANGUAGE返回当前环境变量SQL> select userenv(’language’) from dual; USERENV(’LANGUAGE’)---------------------------------------------------- SIMPLIFIED CHINESE_CHINA.ZHS16GBK LANG返回当前环境的语言的缩写SQL> select userenv(’lang’) from dual; USERENV(’LANG’)----------------------------------------------------ZHSTERMINAL返回用户的终端或机器的标志SQL> select userenv(’terminal’) from dual; USERENV(’TERMINA----------------GAOVSIZE(X)返回X的大小(字节)数SQL> select vsize(user),user from dual; VSIZE(USER) USER----------- ------------------------------6 SYSTEM60.AVG(DISTINCT|ALL)all表示对所有的值求平均值,distinct只对不同的值求平均值SQLWKS> create table table3(xm varchar(8),sal number(7,2));语句已处理。

oracle常见函数:平均值、总数、最小值、最大值、总和、标准差

oracle常见函数:平均值、总数、最小值、最大值、总和、标准差

oracle常见函数:平均值、总数、最⼩值、最⼤值、总和、标准差sql函数包括如下:avg函数:计算查询中某⼀特定字段资料的算术平均值。

count函数:计算符合查询条件的记录数。

min, max函数:传回指定字段之中符合查询条件的第⼀条、最末条记录的资料。

first, last函数:传回指定字段之中符合查询条件的最⼩值、最⼤值。

stdev函数:计算指定字段之中符合查询条件的标准差。

sum函数:计算指定字段之中符合查询条件的资料总和。

var,函数:计算指定字段之中符合查询条件的变异数估计值。

详细描述如下:avg函数avg函数,计算查询中某⼀特定字段资料的算术平均值。

语法为avg(运算式)。

运算式,可为字段名称、运算式、或⼀个函数,此函数可以是⼀个内部或使⽤者定义的,但不能为其它的sql函数。

avg函数在计算时,不包含任何值为null的资料。

count函数count函数,计算符合查询条件的记录条数。

语法为count (运算式)。

运算式,可为字段名称、*、多个字段名称、运算式、或⼀个函数,此函数可以是⼀个内部或使⽤者定义的,但不能为其它的sql函数。

count 函数於计算时,不包含任何值为null的资料。

但是,count(*) 则计算所有符合查询条件的记录条数,包含那些null的资料。

如果count(字段名称) 的字段名称为多个字段,将字段名称之间使⽤ & 分隔。

多个字段当中,⾄少有⼀个字段的值不为null的情况下,count函数才会计算为⼀条记录。

如果多个字段都为null,则不算是⼀条记录。

譬如:select count(价格 & 代号) from产品first/last函数 first函数、last函数,传回指定字段之中符合查询条件的第⼀条、最末条记录的资料。

语法为first(运算式) 和 last(运算式)。

运算式,可为字段名称、运算式、或⼀个函数,此函数可以是⼀个内部或使⽤者定义的,但不能为其它的sql函数。

oracle统计个数的函数

oracle统计个数的函数

Oracle统计个数的函数在Oracle数据库中,有几个特定的函数可以用于统计个数。

这些函数可以用于计算满足特定条件的行数或返回不同值的个数。

以下是一些常用的统计个数的函数:•COUNT()•COUNT(DISTINCT)•SUM(CASE WHEN … THEN …)•GROUP BY和HAVING子句下面将详细解释每个函数的定义、用途和工作方式。

1. COUNT()定义: COUNT()函数用于计算满足特定条件的行数。

用途: COUNT()函数可以用于计算表中满足特定条件的行数,也可以用于计算表中的所有行数。

工作方式: COUNT()函数的语法如下:COUNT(expression)其中,expression是要计算行数的列或表达式。

COUNT()函数返回一个整数,表示满足条件的行数。

如果不指定expression,COUNT()函数将计算表中的所有行数。

如果指定expression,COUNT()函数将计算满足expression条件的行数。

示例:-- 计算表中的所有行数SELECT COUNT(*) FROM employees;-- 计算满足特定条件的行数SELECT COUNT(*) FROM employees WHERE salary > 5000;2. COUNT(DISTINCT)定义: COUNT(DISTINCT)函数用于计算不同值的个数。

用途: COUNT(DISTINCT)函数可以用于计算表中某列的不同值的个数。

工作方式: COUNT(DISTINCT)函数的语法如下:COUNT(DISTINCT expression)其中,expression是要计算不同值个数的列或表达式。

COUNT(DISTINCT)函数返回一个整数,表示不同值的个数。

示例:-- 计算表中某列的不同值个数SELECT COUNT(DISTINCT department_id) FROM employees;3. SUM(CASE WHEN … THEN …)定义:SUM(CASE WHEN … THEN …)函数用于根据条件计算列的和。

oracle 方差函数

oracle 方差函数

oracle 方差函数Oracle方差函数是一种统计函数,用来计算一组数据的方差。

方差是一种衡量数据分散程度的指标,可以帮助我们了解数据的离散程度和波动情况。

在数据分析和统计建模中,方差函数是非常重要的工具之一。

方差是一个统计学中的概念,用来衡量一组数据的离散程度。

它的计算公式是将每个数据与数据均值之差的平方求和,然后除以数据个数。

方差的值越大,表示数据的离散程度越大,反之则表示数据的集中程度较高。

在Oracle数据库中,我们可以使用VAR函数来计算一组数据的方差。

VAR函数的使用非常简单,只需要将要计算方差的列名作为参数传入即可。

例如,我们有一张名为"sales"的表,其中有一列"amount"表示销售额,我们可以使用以下SQL语句计算销售额的方差:SELECT VAR(amount) FROM sales;VAR函数会返回销售额的方差值。

需要注意的是,VAR函数会自动忽略NULL值,因此在计算方差之前不需要额外的处理。

除了VAR函数,Oracle数据库还提供了其他一些方差相关的函数,如VAR_POP和VAR_SAMP。

VAR_POP函数用于计算总体方差,而VAR_SAMP函数用于计算样本方差。

这两个函数的使用方法与VAR 函数类似,只需要将相应的列名作为参数传入即可。

除了使用方差函数来计算数据的离散程度,我们还可以使用方差函数来进行数据分析和决策支持。

例如,在销售数据分析中,我们可以使用方差来评估不同产品的销售波动情况,从而判断产品的市场表现和销售策略的有效性。

又如,在投资组合管理中,我们可以使用方差来衡量不同资产的风险,从而帮助投资者做出合理的投资决策。

Oracle方差函数是一种非常实用的统计函数,可以帮助我们计算数据的离散程度,进行数据分析和决策支持。

通过合理地使用方差函数,我们可以更好地理解和利用数据,从而提高工作效率和决策质量。

希望本文对读者理解和应用Oracle方差函数有所帮助。

oracle的count函数

oracle的count函数

Oracle的COUNT函数介绍在Oracle数据库中,COUNT函数是一种聚合函数,用于查询满足指定条件的行数。

COUNT函数的语法为:COUNT(expr)其中,expr是要统计的列或表达式。

COUNT函数会返回该列或表达式的非空值的数量。

COUNT函数可以与其他数据库函数(如SUM、MAX、MIN等)一起使用,也可以与GROUP BY子句一起使用以对结果分组。

本文将深入探讨Oracle的COUNT函数,包括使用方法、常见应用场景等。

使用方法COUNT函数可以用于不同的场景和用途,具体取决于expr参数的使用方式。

下面是一些常见的使用方法:统计表中的行数SELECT COUNT(*) FROM table_name;上述语句将返回表table_name中的总行数。

COUNT函数的参数使用通配符*,表示统计所有行。

统计某列的非空值数量SELECT COUNT(column_name) FROM table_name;上述语句将返回表table_name中列column_name的非空值数量。

COUNT函数的参数为具体的列名。

结合条件统计行数SELECT COUNT(*) FROM table_name WHERE condition;上述语句将返回表table_name中满足条件condition的行数。

可以根据实际需要对条件进行组合和筛选。

常见应用场景COUNT函数在数据分析和报表生成等场景中具有广泛的应用。

以下是一些常见的应用场景:统计订单数量SELECT COUNT(*) FROM orders;通过COUNT函数,可以轻松统计订单表中的订单数量。

对于电商平台等需要分析销售数据的场景很有用。

筛选满足条件的行数SELECT COUNT(*) FROM products WHERE price > 1000;通过COUNT函数结合条件语句,可以筛选出满足特定条件的行数。

例如,上述语句统计了价格大于1000的产品数量。

oracle常用的分析函数

oracle常用的分析函数

oracle常⽤的分析函数常⽤的分析函数如下所列:row_number() over(partition by ... order by ...)rank() over(partition by ... order by ...)dense_rank() over(partition by ... order by ...)count() over(partition by ... order by ...)max() over(partition by ... order by ...)min() over(partition by ... order by ...)sum() over(partition by ... order by ...)avg() over(partition by ... order by ...)first_value() over(partition by ... order by ...)last_value() over(partition by ... order by ...)lag() over(partition by ... order by ...)lead() over(partition by ... order by ...)⼀、Oracle分析函数简介:在⽇常的⽣产环境中,我们接触得⽐较多的是OLTP系统(即Online Transaction Process),这些系统的特点是具备实时要求,或者⾄少说对响应的时间多长有⼀定的要求;其次这些系统的业务逻辑⼀般⽐较复杂,可能需要经过多次的运算。

⽐如我们经常接触到的电⼦商城。

在这些系统之外,还有⼀种称之为OLAP的系统(即Online Aanalyse Process),这些系统⼀般⽤于系统决策使⽤。

通常和数据仓库、数据分析、数据挖掘等概念联系在⼀起。

这些系统的特点是数据量⼤,对实时响应的要求不⾼或者根本不关注这⽅⾯的要求,以查询、统计操作为主。

oracle 分组统计函数

oracle 分组统计函数

oracle 分组统计函数Oracle是一种流行的关系型数据库管理系统,具有强大的分组统计函数,可以帮助用户轻松实现数据分析和汇总。

在本文中,我们将介绍几种常用的Oracle分组统计函数,并说明它们的用途和功能。

GROUP BY子句是SQL语句中用于对查询结果进行分组的重要部分。

在Oracle中,可以结合使用GROUP BY子句和聚合函数来实现数据的分组统计。

以下是几种常用的Oracle分组统计函数:1. COUNT函数:COUNT函数用于统计查询结果集中行的数量。

可以结合GROUP BY子句使用,以实现对分组数据的计数统计。

例如,可以使用COUNT(*)来统计每个分组中的行数,或者使用COUNT(column_name)来统计指定列中非空值的数量。

2. SUM函数:SUM函数用于计算指定列的合计值。

可以结合GROUP BY子句使用,以实现对分组数据的求和统计。

例如,可以使用SUM(column_name)来计算每个分组中指定列的合计值。

3. AVG函数:AVG函数用于计算指定列的平均值。

可以结合GROUP BY子句使用,以实现对分组数据的平均值统计。

例如,可以使用AVG(column_name)来计算每个分组中指定列的平均值。

4. MAX函数:MAX函数用于找出指定列的最大值。

可以结合GROUP BY子句使用,以实现对分组数据的最大值统计。

例如,可以使用MAX(column_name)来找出每个分组中指定列的最大值。

5. MIN函数:MIN函数用于找出指定列的最小值。

可以结合GROUP BY子句使用,以实现对分组数据的最小值统计。

例如,可以使用MIN(column_name)来找出每个分组中指定列的最小值。

除了上述常用的分组统计函数外,Oracle还提供了其他一些函数,如STDDEV、VARIANCE等,用于计算标准差和方差等统计指标。

这些函数可以帮助用户更全面地分析数据,发现数据的规律和趋势。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

SQL Statistical FunctionsMake Big Data + Analytics SimpleCharlie Berger, MS Engineering, MBASr. Director Product Management, Data Mining and Advanced Analytics charlie.berger@ /CharlieDataMineData, data everywhereData Analysis platforms requirements:•Be extremely powerful and handle large data volumes •Be easy to learn•Be highly automated & enable deploymentGrowth of Data Exponentially Greater than Growth of Data Analysts!/more-data-than-analysts-the-real-big-data-problem/Analytics + Data Warehouse + Hadoop•Platform Sprawl–More Duplicated Data–More Data Movement Latency–More Security challenges–More Duplicated Storage–More Duplicated Backups–More Duplicated Systems–More Space and PowerOracle Advanced Analytics Database EvolutionAnalytical SQL in the Database 1998 1999 2002 2005 2008 2004 20112014•7 Data Mining “Partners” •Oracle acquiresThinking Machine Corp’s dev. team +“Darwin” data mining software •Oracle Data Mining 10gR2 SQL - 7 new SQL dm algorithms and new Oracle Data Miner “Classic” wizards driven GUI •SQL statistical functions introduced •New algorithms (EM,PCA, SVD)•Predictive Queries •SQLDEV/Oracle Data Miner 4.0 SQL scriptgeneration and SQL Query node (R integration) •OAA/ORE 1.3 + 1.4 adds NN, Stepwise,scalable R algorithms •Oracle Adv. Analytics for Hadoop Connectorlaunched with scalable BDA algorithms•Oracle Data Mining 9.2i launched – 2 algorithms (NB and AR) via Java API •ODM 11g & 11gR2 adds AutoDataPrep (ADP), text mining, perf. improvements •SQLDEV/Oracle Data Miner 3.2 “work flow” GUI launched •Integration with “R” and introduction/addition of Oracle R Enterprise •Product renamed “Oracle Advanced Analytics (ODM + ORE)You Can Think of Oracle Advanced Analytics Like This…Traditional SQL–“Human-driven” queries–Domain expertise–Any “rules” must be defined andmanagedSQL Queries–SELECT–DISTINCT–AGGREGATE–WHERE–AND OR–GROUP BY–ORDER BY–RANKSQL Statistical Functions - SQL & –Automated knowledge discovery, modelbuilding and deployment–Domain expertise to assemble the “right”data to mine/analyzeStatistical SQL “Verbs”–MEAN, STDEV–MEDIAN–SUMMARY–CORRELATE–FIT–COMPARE–ANOVA+OBIEE Oracle Database Enterprise EditionOracle Advanced Analytics Database ArchitectureMulti-lingual Component of Oracle Database —SQL, SQL Dev/ODMr GUI, ROracle Advanced Analytics - Database Option SQL Data Mining & Analytic Functions + R Integration for Scalable, Distributed, Parallel in-Database ML ExecutionSQL Developer/ODMrApplicationsR ClientData & Business AnalystsR programmersBusiness Analysts/MgrsDomain End UsersUsersPlatformOracle Database 12cVision•Big Data + Analytic Platform for the Era of Big Data and Cloud–Make Big Data + Analytics Discovery Simple•Any data size, on any computer infrastructure•Any variety of data (structured, unstructured, transactional, geospatial), in any combination–Make Big Data + Analytics Deployment Simple•As a service, as a platform, as an applicationOracle Advanced Analytics Database Option Wide Range of In-Database Data Mining and Statistical Functions•Data Understanding & Visualization–Summary & Descriptive Statistics–Histograms, scatter plots, box plots, bar charts–R graphics: 3-D plots, link plots, special R graph types–Cross tabulations–Tests for Correlations (t-test, Pearson’s, ANOVA)–Selected Base SAS equivalents•Data Selection, Preparation and Transformations–Joins, Tables, Views, Data Selection, Data Filter, SQL time windows, Multiple schemas –Sampling techniques–Re-coding, Missing values–Aggregations–Spatial data–SQL Patterns–R to SQL transparency and push down•Classification Models–Logistic Regression (GLM)–Naive Bayes–Decision Trees–Support Vector Machines (SVM)–Neural Networks (NNs)•Regression Models–Multiple Regression (GLM)–Support Vector Machines •Clustering–Hierarchical K-means–Orthogonal Partitioning–Expectation Maximization•Anomaly Detection–Special case Support Vector Machine (1-Class SVM) •Associations / Market Basket Analysis– A Priori algorithm•Feature Selection and Reduction–Attribute Importance (Minimum Description Length)–Principal Components Analysis (PCA)–Non-negative Matrix Factorization–Singular Vector Decomposition•Text Mining–Most OAA algorithms support unstructured data (i.e. customer comments, email, abstracts, etc.)•Transactional & Spatial Data–All OAA algorithms support transactional data (i.e. purchase transactions, repeated measures over time, distances from location, time spent in area A,B, C, etc.)•R packages—ability to run open source–Broad range of R CRAN packages can be run as part of database process via R to SQL transparency and/or via Embedded R modeIndependent Samples T-Test(Pooled Variances)•Query compares the mean of AMOUNT_SOLD between MEN and WOMEN within CUST_INCOME_LEVEL ranges.Returns observed t value and its related two-sided significanceSQL PlusSELECT substr(cust_income_level,1,22) income_level,avg(decode(cust_gender,'M',amount_sold,null)) sold_to_men, avg(decode(cust_gender,'F',amount_sold,null)) sold_to_women, stats_t_test_indep(cust_gender, amount_sold, 'STATISTIC','F') t_observed,stats_t_test_indep(cust_gender, amount_sold) two_sided_p_value FROM sh.customers c, sh.sales s WHERE c.cust_id=s.cust_idGROUP BY rollup(cust_income_level) ORDER BY 1;Split Lot A/B Offer testingIn-Database SQL t-test•Offer “A” to one populationand “B” to another•Over time period “t”calculate median purchaseamounts of customersreceiving offer A & B•Perform t-test to compare•If statistically significantly better results achieved from one offer over another, offer everyone higher performing offerDBMS_STAT_FUNCS PackageSUMMARY procedure•SUMMARY procedure is summarize a numerical column (ADM_PULSE); the summary is returned as record of type summaryTypeset echo offconnect CBERGER/CBERGERset serveroutput onset echo ondeclares DBMS_STAT_FUNCS.SummaryType;beginDBMS_STAT_FUNCS.SUMMARY('CBERGER','LYMPHOMA','ADM_PULSE',3,s);dbms_output.put_line('SUMMARY STATISTICS');dbms_output.put_line('Count: '||s.count);dbms_output.put_line('Min: '||s.min);dbms_output.put_line('Max: '||s.max);dbms_output.put_line('Range: '||s.range);dbms_output.put_line('Mean: '||round(s.mean));dbms_output.put_line('Mode Count: '||s.cmode.count);dbms_output.put_line('Mode: '||s.cmode(1));dbms_output.put_line('Variance: '||round(s.variance));dbms_output.put_line('Stddev: '||round(s.stddev));dbms_output.put_line('Quantile 5 '||s.quantile_5);dbms_output.put_line('Quantile 25 '||s.quantile_25);dbms_output.put_line('Median '||s.median);dbms_output.put_line('Quantile 75 '||s.quantile_75);dbms_output.put_line('Quantile 95 '||s.quantile_95);dbms_output.put_line('Extreme Count: '||s.extreme_values.count);dbms_output.put_line('Extremes: '||s.extreme_values(1));dbms_output.put_line('Top 3: '||s.top_5_values(1)||','||s.top_5_values(2)||','||s.top_5_values(3));dbms_output.put_line('Bottom 3: '||s.bottom_5_values(5)||','||s.bottom_5_values(4)||','||s.bottom_5_values(3));end;/One-Sample T-Test•Query compares the mean of SURVIVAL_TIME to the assumed value of 35: SELECT avg(SURVIVAL_TIME_MO) group_mean,stats_t_test_one(SURVIVAL_TIME_MO, 35,'STATISTIC') t_observed,stats_t_test_one(SURVIVAL_TIME_MO, 35)two_sided_p_valueFROM LYMPHOMA;•Returns the observed t value and its related two-sided significanceSQL WorksheetPaired Samples T-Test•Query compares the mean of LOGWT for Pig Weights in Week 3 to Week 8, grouped by Diet:SELECT substr(diet,1,1) as diet, avg(LOGWT3) logwt3_mean,avg(LOGWT8) logwt8_mean,stats_t_test_paired(LOGWT3, LOGWT8,'STATISTIC') t_observed,stats_t_test_paired(LOGWT3, LOGWT8) two_sided_p_valueFROM CBERGER.PIGLETS3GROUP BY ROLLUP(DIET)ORDER BY 5 ASC;•Returns the observed t value and its related two-sided significanceSQL WorksheetQuery compares the variance in the SIZE_TUMOR between MALES and FEMALES SELECT variance(decode(GENDER,'0', SIZE_TUMOR_MM, null))var_tumor_men,variance(decode(GENDER,'1', SIZE_TUMOR_MM,null)) var_tumor_women, stats_f_test(GENDER, SIZE_TUMOR_MM, 'STATISTIC', '1') f_statistic, stats_f_test(GENDER, SIZE_TUMOR_MM) two_sided_p_valueFROM DMUSER.LYMPHOMA;•Returns observed f value and two-sided significanceSQL Worksheet•Query compares the variance in the SIZE_TUMOR between males and females Grouped By GENDERSELECT GENDER,stats_one_way_anova(TREATMENT_PLAN,SIZE_REDUCTION,'F_RATIO') f_ratio,stats_one_way_anova(TREATMENT_PLAN,SIZE_REDUCTION,'SIG') p_value, AVG(SIZE_REDUCTION)FROM CBERGER.LYMPHOMAGROUP BY GENDER ORDER BY GENDER;•Returns observed f value and two-sided significanceSQL WorksheetOne-Way ANOVA•Query compares the average SIZE_REDUCTION within different TREATMENT_PLANS Grouped By LYMPH_TYPE:SELECT LYMPH_TYPE,stats_one_way_anova(TREATMENT_PLAN,SIZE_REDUCTION,'F_RATIO') f_ratio,stats_one_way_anova(TREATMENT_PLAN,SIZE_REDUCTION,'SIG') p_valueFROM DMUSER.LYMPHOMAGROUP BY LYMPH_TYPE ORDER BY 1;•Returns one-way ANOVA significance and split by LYMPH_TYPEHypothesis TestingNonparametric•Nonparametric tests are used when certain assumptions about the data are questionable.•This may include the difference between samples that are not normally distributed. •All tests involving ordinal scales (in which data is ranked) are nonparametric. •Nonparametric tests supported in Oracle Database 10g:–Binomial test–Wilcoxon Signed Ranks test–Mann-Whitney test–Kolmogorov-Smirnov testCustomer Example•"..Our experience suggests that Oracle Statistics and Data Mining features can reduce development effort of analytical systems by an order of magnitude."–Sumeet Muju, Senior Member of Professional Staff, SRA International (SRA supports NIH bioinformatics development projects)Correlation Functions•The CORR_S and CORR_K functions support nonparametric or rank correlation (finding correlations between expressions that are ordinal scaled).•Correlation coefficients take on a value ranging from –1 to 1, where:–1 indicates a perfect relationship––1 indicates a perfect inverse relationship–0 indicates no relationship•The following query determines whether there is a correlation between the AGE and WEIGHT of people, using Spearman's correlation: select CORR_S(AGE, WEIGHT)coefficient,CORR_S(AGE, WEIGHT,'TWO_SIDED_SIG')p_value, substr(TREATMENT_PLAN, 1,15) as TREATMENT_PLANfrom DMUSER.LYMPHOMAGROUP BY TREATMENT_PLAN;•Procedure to find correlation coefficients for all attributes vs. all attributesselect * from outtab order by correlation desc;DROP TABLE OUTTAB PURGE; BEGINmcorr('CUST_INSUR_LTV','OUTTAB'); END; /-- Procedure for creating a correlation table -- Parameters:-- p_in_table - name of the input data table -- p_out_table - name of the output table-- p_type - correlation type ('P' - Pearson - default -- 'S' - Spearman's rho -- 'K' - Kendall's tau-b)-- p_compact - output type (1 - compact output, triangular matrix, default -- 0 - full matrix) ---- Usage:-- 1) Uses Pearson correlation and compact output, saves results to OUTTAB -- DROP TABLE OUTTAB PURGE; -- BEGIN-- mcorr('EMP','OUTTAB'); -- END; -- /-- SELECT * FROM outtab ORDER BY col1, col2; ---- 2) Uses Spearman's rho and full matrix output, saves results to OUTTABselect * from outtab order by correlation desc;DROP TABLE OUTTAB PURGE; BEGINmcorr('CUST_INSUR_LTV','OUTTAB'); END; /-- DROP TABLE OUTTAB PURGE; -- BEGIN-- mcorr('EMP','OUTTAB','S',0); -- END; -- /-- SELECT * FROM outtab ORDER BY col1, col2; --CREATE OR REPLACE PROCEDURE mcorr(p_in_table VARCHAR2, p_out_table VARCHAR2,p_type VARCHAR2 DEFAULT 'P', p_compact NUMBER DEFAULT 1) AS TYPE Char_Tab IS TABLE OF VARCHAR2(30); v_col_names Char_Tab; v_stmt VARCHAR2(4000); v_stmt1 VARCHAR2(4000); v_corr NUMBER;v_corr_str VARCHAR2(6) := 'CORR'; BEGINIF (p_type ='S') THEN v_corr_str := 'CORR_S'; ELSEIF (p_type = 'K') THEN v_corr_str := 'CORR_K'; END IF; END IF;-- get list of columnsv_stmt := 'SELECT column_name FROM user_tab_columns ' || 'WHERE data_type = ''NUMBER'' AND ' || ' table_name = ''' || p_in_table || '''';EXECUTE IMMEDIATE v_stmt BULK COLLECT INTO v_col_names;-- create output tablev_stmt := 'CREATE TABLE ' || p_out_table ||'(col1 VARCHAR2(30), col2 VARCHAR2(30), correlation NUMBER)'; EXECUTE IMMEDIATE v_stmt;-- compute correlation and insert into output table v_stmt:='INSERT INTO ' || p_out_table ||' (col1, col2, correlation) VALUES(:v1, :v2, :v3)';FOR i IN 1..v_col_names.count LOOPEXECUTE IMMEDIATE v_stmt using v_col_names(i), v_col_names(i), 1.0; FOR j IN (i+1)..v_col_names.count LOOP v_stmt1 :='SELECT ' || v_corr_str || '(' || v_col_names(i) || ',' || v_col_names(j) || ') ' || 'FROM ' || p_in_table;EXECUTE IMMEDIATE v_stmt1 INTO v_corr;EXECUTE IMMEDIATE v_stmt using v_col_names(i), v_col_names(j), v_corr; IF (p_compact = 0) THENEXECUTE IMMEDIATE v_stmt using v_col_names(j), v_col_names(i), v_corr; END IF;END LOOP; END LOOP; END; /SHOW ERRORS;•This query analyzes the strength of the association between TREATMENT_PLAN and GENDER Grouped By LYMPH_TYPE using a cross tabulation:SELECT LYMPH_TYPE,stats_crosstab(GENDER, TREATMENT_PLAN,'CHISQ_OBS') chi_squared,stats_crosstab(GENDER, TREATMENT_PLAN,'CHISQ_SIG') p_value,stats_crosstab(GENDER, TREATMENT_PLAN,'PHI_COEFFICIENT') phi_coefficientFROM CBERGER.LYMPHOMAGROUP BY LYMPH_TYPE ORDER BY 1;•Returns the observed p_value and phi coefficient significance:•STATS_CROSSTAB function takes as arguments two expressions (the two variables being analyzed) and a value that determines which test to perform. These values include the following:–CHISQ_OBS (observed value of chi-squared)–CHISQ_SIG (significance of observed chi-squared)–CHISQ_DF (degree of freedom for chi-squared)–PHI_COEFFICIENT (phi coefficient)–CRAMERS_V (Cramer’s V statistic)–CONT_COEFFICIENT (contingency coefficient)–COHENS_K (Cohen’s kappa)•Function returns all values as specified by the third argument (default is CHISQ_SIG)PriceQuantity SoldExcerpted from Rob Rolek, BIWA TechCast presentation “Lies, Damned Lies and SQL Statistical Functions”, rolekr@Multiple Simple Linear Regression FitsExcerpted from Rob Rolek, BIWA TechCast presentation “Lies, Damned Lies and SQL Statistical Functions”, rolekr@Oracle Advanced Analytics Database Option Fastest Way to Deliver Scalable Enterprise-wide Predictive Analytics Key Features▪Scalable in-database data miningalgorithms and R integration▪Powerful predictive analytics anddeployment platform▪Drag and drop workflow, R and SQL APIs▪Data analysts, data scientists & developers▪Enables enterprise predictive analyticsapplicationsOracle Advanced Analytics•R language for interaction with the database •R-SQL Transparency Framework overloads R functions for scalable in-database execution •Function overload for data selection, manipulation and transforms•Interactive display of graphical results and flow control as in standard R•Submit user-defined R functions forexecution at database server under control of Oracle Database•15+ Powerful data mining algorithms (regression, clustering, AR, DT, etc._ •Run Oracle Data Mining SQL data mining functioning (ORE.odmSVM, ORE.odmDT, etc.) •Speak “R” but executes as proprietary in -database SQL functions —machine learning algorithms and statistical functions •Leverage database strengths: SQL parallelism, scale to large datasets, security •Access big data in Database and Hadoop via Other R packagesOracle R Enterprise (ORE) packagesR-> SQL Transparency “Push -Down”•R Engine(s) spawned by Oracle DB for database-managed parallelism •ore.groupApply high performance scoring •Efficient data transfer to spawned R engines•Emulate map-reduce style algorithms and applications •Enables production deployment and automated execution of R scripts Oracle Database 12cR-> SQL ResultsIn-Database Adv Analytical SQL FunctionsR EngineOther R packagesOracle R Enterprise packagesEmbedded R Package CalloutsRResultsHow Oracle R Enterprise Compute Engines Work123Getting startedOAA Links and Resources•Oracle Advanced Analytics Overview:–OAA presentation—Big Data Analytics in Oracle Database 12c With Oracle Advanced Analytics & Big Data SQL –Big Data Analytics with Oracle Advanced Analytics: Making Big Data and Analytics Simple white paper on OTN –Oracle Internal OAA Product Management Wiki and Workspace•YouTube recorded OAA Presentations and Demos:–Oracle Advanced Analytics and Data Mining at the YouTube Movies(6 + OAA “live” Demos on ODM’r 4.0 New Features, Retail, Fraud, Loyalty, Overview, etc.)•Getting Started:–Link to Getting Started w/ ODM blog entry–Link to New OAA/Oracle Data Mining 2-Day Instructor Led Oracle University course.–Link to OAA/Oracle Data Mining 4.0 Oracle by Examples (free) Tutorials on OTN–Take a Free Test Drive of Oracle Advanced Analytics (Oracle Data Miner GUI) on the Amazon Cloud–Link to OAA/Oracle R Enterprise (free) Tutorial Series on OTN•Additional Resources:–Oracle Advanced Analytics Option on OTN page–OAA/Oracle Data Mining on OTN page, ODM Documentation & ODM Blog–OAA/Oracle R Enterprise page on OTN page, ORE Documentation & ORE Blog–Oracle SQL based Basic Statistical functions on OTN–BIWA Summit’16, Jan 26-28, 2016– Oracle Big Data & Analytics User Conference @ Oracle HQ Conference Center•Hands-on-Labs•Customer stories, told by the customers•Educational sessions by Practitioners and Direct from Developers •Oracle Keynote presentations•Presentations covering: Advanced Analytics, Big Data, Business Intelligence, Cloud, Data Warehousing and Integration, Spatial and Graph, SQL •Networking with product management and development professionals。

相关文档
最新文档