SQL笔记-正态分布函数

这篇文章介绍了不同数据库系统如Oracle、MySQL、SQLServer和PostgreSQL中正态分布函数的使用方法,包括函数原型和参数解释。同时,展示了如何在多表环境下计算正态分布,通过建表、插入数据和计算正态分布函数的示例来说明操作过程。
摘要由CSDN通过智能技术生成

1. 数据库正态分布函数的说明

Oracle

Oracle数据库中的正态分布函数为NORMALDIST,其函数原型为:

NORMALDIST(x, mean, std [, cumulative])

其中,x为随机变量,mean为均值,std为标准差,cumulative为可选参数,表示是否计算累积分布函数(默认为TRUE)。

MySQL

MySQL数据库中的正态分布函数为NORMDIST,其函数原型为:

NORMDIST(x, mean, std)

其中,x为随机变量,mean为均值,std为标准差。

SQL Server

SQL Server数据库中的正态分布函数为NORMDIST,其函数原型为:

NORMDIST(x, mean, std)

其中,x为随机变量,mean为均值,std为标准差。

PostgreSQL

PostgreSQL数据库中的正态分布函数为normal_cdf,其函数原型为:

normal_cdf(x, mean, std)

其中,x为随机变量,mean为均值,std为标准差。

2. 多表正态分布函数的写法

Oracle

-- 建表语句
CREATE TABLE table1 (
  id NUMBER(10) PRIMARY KEY,
  value NUMBER(10)
);

CREATE TABLE table2 (
  id NUMBER(10) PRIMARY KEY,
  value NUMBER(10)
);

-- 插入数据
INSERT INTO table1 VALUES (1, 10);
INSERT INTO table1 VALUES (2, 20);
INSERT INTO table1 VALUES (3, 30);

INSERT INTO table2 VALUES (1, 5);
INSERT INTO table2 VALUES (2, 15);
INSERT INTO table2 VALUES (3, 25);

-- 计算正态分布函数
SELECT NORMALDIST(t1.value - t2.value, MEAN, STDDEV) AS result
FROM table1 t1, table2 t2
CROSS JOIN (
  SELECT AVG(value) AS MEAN, STDDEV(value) AS STDDEV
  FROM (
    SELECT value FROM table1
    UNION ALL
    SELECT value FROM table2
  ) t
) s;

MySQL

-- 建表语句
CREATE TABLE table1 (
  id INT PRIMARY KEY,
  value INT
);

CREATE TABLE table2 (
  id INT PRIMARY KEY,
  value INT
);

-- 插入数据
INSERT INTO table1 VALUES (1, 10);
INSERT INTO table1 VALUES (2, 20);
INSERT INTO table1 VALUES (3, 30);

INSERT INTO table2 VALUES (1, 5);
INSERT INTO table2 VALUES (2, 15);
INSERT INTO table2 VALUES (3, 25);

-- 计算正态分布函数
SELECT NORMDIST(t1.value - t2.value, MEAN, STDDEV) AS result
FROM table1 t1, table2 t2
CROSS JOIN (
  SELECT AVG(value) AS MEAN, STDDEV(value) AS STDDEV
  FROM (
    SELECT value FROM table1
    UNION ALL
    SELECT value FROM table2
  ) t
) s;

SQL Server

-- 建表语句
CREATE TABLE table1 (
  id INT PRIMARY KEY,
  value INT
);

CREATE TABLE table2 (
  id INT PRIMARY KEY,
  value INT
);

-- 插入数据
INSERT INTO table1 VALUES (1, 10);
INSERT INTO table1 VALUES (2, 20);
INSERT INTO table1 VALUES (3, 30);

INSERT INTO table2 VALUES (1, 5);
INSERT INTO table2 VALUES (2, 15);
INSERT INTO table2 VALUES (3, 25);

-- 计算正态分布函数
SELECT NORMDIST(t1.value - t2.value, MEAN, STDDEV) AS result
FROM table1 t1, table2 t2
CROSS JOIN (
  SELECT AVG(value) AS MEAN, STDEV(value) AS STDDEV
  FROM (
    SELECT value FROM table1
    UNION ALL
    SELECT value FROM table2
  ) t
) s;

PostgreSQL

-- 建表语句
CREATE TABLE table1 (
  id SERIAL PRIMARY KEY,
  value INT
);

CREATE TABLE table2 (
  id SERIAL PRIMARY KEY,
  value INT
);

-- 插入数据
INSERT INTO table1 (value) VALUES (10);
INSERT INTO table1 (value) VALUES (20);
INSERT INTO table1 (value) VALUES (30);

INSERT INTO table2 (value) VALUES (5);
INSERT INTO table2 (value) VALUES (15);
INSERT INTO table2 (value) VALUES (25);

-- 计算正态分布函数
SELECT normal_cdf(t1.value - t2.value, MEAN, STDDEV) AS result
FROM table1 t1, table2 t2
CROSS JOIN (
  SELECT AVG(value) AS MEAN, STDDEV(value) AS STDDEV
  FROM (
    SELECT value FROM table1
    UNION ALL
    SELECT value FROM table2
  ) t
) s;
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

123的故事

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值