oracle 如何实现excel的正态分布函数normdist

实现目标

EXCEL中的NORMDIST是指返回指定平均值和标准偏差的正态分布函数。此函数在统计方面应用范围广泛(包括假设检验)。
语法:
NORMDIST(x,mean,standard_dev,cumulative)
X 为需要计算其分布的数值。
Mean 分布的算术平均值。
Standard_dev 分布的标准偏差。
Cumulative 为一逻辑值,指明函数的形式。如果 cumulative 为 TRUE,函数 NORMDIST 返回累积分布函数;如果为 FALSE,返回概率密度函数。

如何在oracle中实现excel的NORMDIST函数?

实现思路分析

1、dbms_random.normal函数是用于生成一组正态分布的随机值。不满足要求;
2、java中可以通过apache-commons-math3.jar包实现正态分布函数计算;
3、oracle是否可通过函数调用Java代码?

java函数调用示例

import org.apache.commons.math3.distribution.NormalDistribution;public class normdist {/*** 计算正态分布值* * <pre>* 方法同excel NORMDIST 函数* </pre>* * @param x*            需要计算其分布的数值* @param mean*            分布的算术平均值* @param standard_dev*            标准偏差* @return 正态分布值*/public static double get(double x, double mean, double standard_dev) {return new NormalDistribution(mean, standard_dev).density(x);}public static void main(String[] args) {for (double d = 0; d < 1.0; d += 0.1) {System.out.println(String.format("%.1f\t %.5f", d, get(d, 0, 4)));}}
}

输出:

0.0   0.09974
0.1  0.09970
0.2  0.09961
0.3  0.09946
0.4  0.09924
0.5  0.09896
0.6  0.09862
0.7  0.09822
0.8  0.09776
0.9  0.09724
1.0  0.09667

Oacle调用示例

oracle导入jar包

将jar包放到目录下:D:\dev\java_sources\commons-math3-3.0.jar
打开cmd命令窗口,加载jar包:commons-math3-3.0.jar 到oracle中

loadjava -r -f -o -user user/pwd@orcl commons-math3-3.0.jar

创建正态分布函数

-- 创建外部目录,存储jar包
create or replace directory class_dir  as 'D:\dev\java_sources';
-- 查看目录
select * from dba_directories;-- 创建java sources
create or replace and compile java source named normdist
as
import org.apache.commons.math3.distribution.NormalDistribution;
public class normdist
{/*** 计算正态分布值* * <pre>* 方法同excel NORMDIST 函数* </pre>* * @param x*            需要计算其分布的数值* @param mean*            分布的算术平均值* @param standard_dev*            标准偏差* @return 正态分布值*/public static double get(double x_in, double mean_in, double standard_dev_in) {return new NormalDistribution(mean_in, standard_dev_in).density(x_in);}
};-- 创建正态分布函数
create or replace function fn_normdist(x_in in number, mean_in in number, standard_dev_in number)
return number
as language java name 'normdist.get(double,double,double)
return double';-- 正态分布函数调用
select fn_normdist(0, 0, 4) as n0, fn_normdist(1, 0, 4) as n1
from dual/*
清理代码
drop function fn_normdist;
drop java source normdist;
*/

调用截图:

参考

https://cloud.tencent.com/developer/ask/149846
https://docs.oracle.com/en/database/oracle/oracle-database/12.2/jjdev/loadjava-tool.html#GUID-AEB08FAD-BE91-45D6-8338-031A70D97C59
https://www.cnblogs.com/mellowsmile/p/4602481.html

oracle 如何实现excel的正态分布函数normdist相关推荐

  1. 使用SQL 计算一组数据的峰度、偏度 公式依据excel的KURT函数和SKEW函数 Oracle 数据库

    使用SQL 计算一组数据的峰度.偏度 公式依据excel的KURT函数和SKEW函数 因为工作原因,要把excel的KURT和SKEW函数在Oracle实现出来并统计,在网上找了半天没有答案..只能自 ...

  2. oracle算加权平均的函数,怎样在Excel表中用函数算加权平均数?《电子表格加权平均函数》...

    怎样在Excel表中用函数算加权平均数? 例子:学校末成绩,考30%,期末考试占50 %,假如期中考试得了84,期末92,作业分91,在A列输入考试成绩依次为84.92.91:在B列依次输入0.3.0 ...

  3. oracle 不等函数,SQL(Oracle)日常使用与不常使用函数的汇总

    --日常使用的sql语句和oracle语句,有些相对使用的频率比较高,收藏起来还是比较值得的 -- 绝对值 SQL:select abs(-1) value Oracle:select abs(-1) ...

  4. EXCEL生成正态分布随机数据

    EXCEL生成正态分布随机数据 如果用Matlab就为简单些,normrnd+normpdf就可实现.但是考虑到excel的普及性,所以采用excel来解决: 1.产生符合正态分布的随机数:输入&qu ...

  5. R语言dataframe计算满足筛选条件的行的个数(筛选满足条件的数据行并计数):类似于excel的countif函数

    R语言dataframe计算满足筛选条件的行的个数(筛选满足条件的数据行并计数):类似于excel的countif函数 目录

  6. R语言dataframe分组数据汇总(aggregate and sum):类似于excel的sumif函数

    R语言dataframe分组数据汇总统计(aggregate and sum):类似于excel的sumif函数 目录 R语言dataframe分组数据汇总统计(aggregate and sum): ...

  7. excel的if函数中android,excel中if函数嵌套式使用教程

    exce表格数据统计函数的示例 函数统计数据步骤1:每个函数均有三个参数:database.field 和 criteria.这些参数指向函数所使用的工作表区域. 函数统计数据步骤2:除了GETPIV ...

  8. EXCEL中SUMIF函数介绍

    在EXCEL中SUMIF函数是一个常用的汇总函数,下面来介绍一下EXCEL中的SUMIF函数的使用方法. 下图是介绍该函数的简单数据数据: 此函数可以进行判定,当某数据项满足特定的条件时,将特定的数据 ...

  9. oracle中类似indexof用法_instr函数

    oracle中类似indexof用法_instr函数 [sql] 在oracle中没有indexof()函数 但是提供了一个 instr() 方法 具体用法: select instr('保定市南市区 ...

  10. 【图文】Excel中vlookup函数的使用方法

    今天统计数据,用到了Excel中vlookup函数,第一次使用当然少不了百度,经过反复研究后,算是解决了问题,现整理成文档. 一.实现效果 Sheet1   Sheet2       注:上图中she ...

最新文章

  1. wxWidgets:wxSpinDoubleEvent类用法
  2. LUNA再次夺冠,科大讯飞向世界宣告自己的实力不止于语音
  3. 我想做一个课程表系统利用PHP+MYSQL+HTML实现课表的展示,但是不知道如何实现
  4. 前端-requests-flask对应关系 json
  5. DSP双线性变换详解
  6. nfc修改饭卡软件下载_你还要什么校园卡?有NFC不就够了
  7. linux ping 命令_Linux ping命令示例
  8. LiveVideoStack线上分享第四季(九):360视频云Web前端HEVC播放器实践剖析
  9. 小米笔记本解决风扇异响
  10. 你真正付出了全部努力了吗?
  11. 配置Spring AOP aspectj-autoproxy标签源码解析
  12. iPhone7产业链不为人知的辛酸
  13. mysql查询笔记_MySQL学习笔记(一):查询
  14. Typora1.0.2 + SMMS上传图片
  15. 跳汰机的实操经验总结
  16. linux中合并多个文件到一个文件中
  17. spark实践-淘宝双十一数据分析与预测
  18. Vert.x ——概述
  19. 2---MATLAB将十进制转换成二进制补码
  20. 【.NET6+Modbus】Modbus TCP协议解析、仿真环境以及基于.NET实现基础通信

热门文章

  1. python安装 文件或目录损坏_文件或目录损坏且无法读取怎么办?
  2. Java类的声明详解
  3. 小区同步、LTE的时间结构(FDD/TDD)
  4. 【破解软件】知音漫客免费看更多漫画
  5. 2019hdu暑假多校训练赛第五场1004 equation hdu 6627 (高中数学题)
  6. python搭建自己的网站_Python+Django搭建自己的blog网站
  7. 最优二叉查找树,动态规划法,二维表,填表优化,代码
  8. 结对编程-李晓彤+凌嘉文
  9. Fail: Failover,Failfast,Failback,Failsafe
  10. 计算机 无法自检,电脑开机不能自检是什么原因 电脑不能完成自检解决办法