oracle怎么计算方差,excle怎么计算方差

sql 求方差

方差是有函数的,

成都创新互联公司:2013年至今为各行业开拓出企业自己的“网站建设”服务,为近1000家公司企业提供了专业的成都网站建设、成都网站制作、网页设计和网站推广服务, 定制网站建设由设计师亲自精心设计,设计的效果完全按照客户的要求,并适当的提出合理的建议,拥有的视觉效果,策划师分析客户的同行竞争对手,根据客户的实际情况给出合理的网站构架,制作客户同行业具有领先地位的。

例如:

SQL SELECT

2 sale_item,

3 VARIANCE(sale_money)

4 FROM

5 sale_report

6 GROUP BY

7 sale_item;

SALE VARIANCE(SALE_MONEY)

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

A 0

B 11.9203372

C 77.5865272

注: Oracle 里面是 VARIANCE 函数, SQL Server 是 VAR 函数, MySQL 是 VAR_SAMP 函数。

但是要求你的数据是 一行一行的

而你的数据, 是一列一列的。

也就是你需要先作 列行转换

我这里假设你的数据库是 SQL Server

SELECT 序号, '6' AS 月份, [6月] AS 数据 FROM 表 UNION ALL

SELECT 序号, '7' AS 月份, [7月] AS 数据 FROM 表 UNION ALL

SELECT 序号, '8' AS 月份, [8月] AS 数据 FROM 表 UNION ALL

SELECT 序号, '9' AS 月份, [9月] AS 数据 FROM 表 UNION ALL

SELECT 序号, '10' AS 月份, [10月] AS 数据 FROM 表 UNION ALL

SELECT 序号, '11' AS 月份, [11月] AS 数据 FROM 表 ;

上面的查询, 应该就会形成一个这样格式的结果:

序号 月份 数据

1 6 134.8

1 7 134.4

1 8 133.4

1 9 134.5

1 10 133.7

1 11 133.7

其他数据略...

这样就可以使用那个函数来处理了

SELECT

序号,

VAR ( 数据 ) AS 方差

FROM

(

SELECT 序号, '6' AS 月份, [6月] AS 数据 FROM 表 UNION ALL

SELECT 序号, '7' AS 月份, [7月] AS 数据 FROM 表 UNION ALL

SELECT 序号, '8' AS 月份, [8月] AS 数据 FROM 表 UNION ALL

SELECT 序号, '9' AS 月份, [9月] AS 数据 FROM 表 UNION ALL

SELECT 序号, '10' AS 月份, [10月] AS 数据 FROM 表 UNION ALL

SELECT 序号, '11' AS 月份, [11月] AS 数据 FROM 表

) subQuery

GROUP BY

序号

方差怎么计算?

有n个数,先求平均值Ex,则方差var(n)=[(x1-Ex)^2+(x2-Ex)^2+……+(xn-EX)^2]/n。

“方差”(variance)这一词语率先由罗纳德·费雪(Ronald Fisher)在其论文《The Correlation Between Relatives on the Supposition of Mendelian Inheritance》中提出。

方差不仅仅表达了样本偏离均值的程度,更是揭示了样本内部彼此波动的程度,也可以理解为方差代表了样本彼此波动的期望。当然,这个结论是在二阶统计矩下成立。

扩展资料:

相关术语:平方差

一、常见错误:平方差公式中常见错误:(注意)

1、学生难于跳出原有的定式思维,如典型错误;(错因:在公式的基础上类推,随意“创造”)

2、混淆公式;

3、运算结果中符号错误;

4、变式应用难以掌握。

二、平方差公式注意事项

1、公式的左边是个两项式的积,有一项是完全相同的。

2、右边的结果是乘式中两项的平方差,相同项的平方减去相反项的平方。

3、公式中的a,b 可以是具体的数,也可以是单项式或多项式。

参考资料来源:百度百科-方差

参考资料来源:百度百科-方差计算公式

参考资料来源:百度百科-平方差公式

oraclestddev和variance函数的用法,在什么时候使用

(1)标准差函数,在统计稳定的平均值是多少。 (2)ARIANCE(expr)用于计算x的方差。方差是一个统计函数,其定义为一组样本数据的偏离程度,等于标准

oracle求方差

(1)标准差函数,在统计稳定的平均值是多少.

(2)ARIANCE(expr)用于计算x的方差.方差是一个统计函数,其定义为一组样本数据的偏离程度,等于标准

oracle中去除最大最小值后求方差用什么函数

(1)oracle使用keep分析函数取最值记录

-- 取工资sal最大的雇员姓名及其工资,以及工资sal最少的雇员姓名及其工资select

deptno,

empno,

ename,

sal,

max(ename) keep(dense_rank FIRST order by sal) over (partition by deptno) as min_sal_man,max(sal) keep(dense_rank FIRST order by sal) over (partition by deptno) as min_sal,max(ename) keep(dense_rank LAST order by sal) over (partition by deptno) as max_sal_man,max(sal) keep(dense_rank LAST order by sal) over (partition by deptno) as max_salfrom emp

where deptno=10

结果如下:

技术分享

从语句中可以看到,ename和sal都是用的max(),这样做的目的是为了去除由于keep()函数得到的有重复值的数据结果集。这样用有一个弊端,加入部门20有两个相同的最大SAL的人,部门30有两个相同的最小SAL的人,如果按照这种方法取出来的数据,就不一定准确了,重复的人会被去除掉。

我们用下面的语句来修改一下:

select

deptno,

empno,

ename,

sal,

max(ename) keep(dense_rank FIRST order by sal) over (partition by deptno) as min_sal_man,max(sal) keep(dense_rank FIRST order by sal) over (partition by deptno) as min_sal,max(ename) keep(dense_rank LAST order by sal) over (partition by deptno) as max_sal_man,max(sal) keep(dense_rank LAST order by sal) over (partition by deptno) as max_sal,wmsys.wm_concat(ename) keep(dense_rank LAST order by sal) over (partition by deptno) as 工资最高的人,wmsys.wm_concat(ename) keep(dense_rank FIRST order by sal) over (partition by deptno) as 工资最低的人from emp

where deptno=20

order by 1, 2 ;

我们新增了两个列:工资最高的人,工资最低的人。执行看一下结果:

技术分享

可以看到,deptno=20时,SCOTT和FORD两个人的工资SAL都是3000,如果用MAX()就只能取出其中一个人的姓名,显然是不对的。

然后,我们再来看一下deptno=30时的情况:

select

deptno,

empno,

ename,

sal,

max(ename) keep(dense_rank FIRST order by sal) over (partition by deptno) as min_sal_man,max(sal) keep(dense_rank FIRST order by sal) over (partition by deptno) as min_sal,max(ename) keep(dense_rank LAST order by sal) over (partition by deptno) as max_sal_man,max(sal) keep(dense_rank LAST order by sal) over (partition by deptno) as max_sal,wmsys.wm_concat(ename) keep(dense_rank LAST order by sal) over (partition by deptno) as 工资最高的人,wmsys.wm_concat(ename) keep(dense_rank FIRST order by sal) over (partition by deptno) as 工资最低的人from emp

where deptno=30

order by 1, 2 ;

deptno=30时的结果如下:

技术分享

可以看到,deptno=30时,WARD和MARTIN两人的工资最小且均为1250,如果用MAX()的方式,就只能取出其中一个人的名称。

这就是因为keep()取出来的数据集是包含多个数据结果的,所以,在语句中使用了wmsys.wm_concat()函数,该函数的作用是以逗号分隔连接列的值。

注:wm_concat()的功能有点儿类似分析函数listagg() within group() 。

(2)使用SQL子查询和聚合函数,查询出最大值和最小值-- 使用子查询查询出最大值和最小值

select * from

(

select

deptno,

listagg(ename,‘,‘) within group (order by deptno) as dept_max_ename,max(sal) as dept_max_sal

from emp

where (deptno,sal) in (select deptno, max(sal) as max_sal from emp group by deptno)group by deptno

) A

inner join

(

select

deptno,

listagg(ename,‘,‘) within group (order by deptno) as dept_min_ename,min(sal) as dept_min_sal

from emp

where (deptno,sal) in (select deptno, min(sal) as min_sal from emp group by deptno)group by deptno

) B

on A.deptno = B.deptno

结果如下:

技术分享

在这个方案里面,还使用了listagg()分析函数将最值有重复姓名的人合并在一起,用wm_concat()函数替代listagg()也可以wm_concat(ename) as dept_max_ename,

wm_concat(ename) as dept_min_ename,


分享文章:oracle怎么计算方差,excle怎么计算方差
分享地址:http://hbruida.cn/article/phjggi.html