oracle怎么求平均值,oracle求平均数函数

oracle查询按记录个数,按比例汇总后求平均值

可以参考如下:

10年积累的成都网站设计、成都网站制作经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先制作网站后付款的网站建设流程,更有平江免费网站建设让你可以放心的选择与我们合作。

CREATE TABLE TEMP_AVG_SCORE

(T_DATA DATE,

T_NAME VARCHAR2(10),

T_SCORE NUMBER(10)

) ;

INSERT INTO TEMP_AVG_SCORE VALUES (TO_DATE('2015-01-01','YYYY-MM-DD'),'A',30) ;

INSERT INTO TEMP_AVG_SCORE VALUES (TO_DATE('2015-01-10','YYYY-MM-DD'),'A',40) ;

INSERT INTO TEMP_AVG_SCORE VALUES (TO_DATE('2015-01-15','YYYY-MM-DD'),'A',35) ;

INSERT INTO TEMP_AVG_SCORE VALUES (TO_DATE('2015-02-01','YYYY-MM-DD'),'B',120) ;

INSERT INTO TEMP_AVG_SCORE VALUES (TO_DATE('2015-02-10','YYYY-MM-DD'),'B',130) ;

INSERT INTO TEMP_AVG_SCORE VALUES (TO_DATE('2015-02-15','YYYY-MM-DD'),'B',150) ;

INSERT INTO TEMP_AVG_SCORE VALUES (TO_DATE('2015-02-20','YYYY-MM-DD'),'B',140) ;

COMMIT;

SELECT T.T_NAME 人员,

AVG(CASE

WHEN TO_CHAR(T.T_DATA, 'MM') = '01' AND T.NUM = 3 THEN

CASE

WHEN RN = 1 THEN

T.T_SCORE * 120 / 100

WHEN RN = 2 THEN

T.T_SCORE * 100 / 100

ELSE

T.T_SCORE * 80 / 100

END

WHEN TO_CHAR(T.T_DATA, 'MM') = '01' AND T.NUM = 4 THEN

CASE

WHEN RN = 1 THEN

T.T_SCORE * 120 / 100

WHEN RN = 2 THEN

T.T_SCORE * 110 / 100

WHEN RN = 3 THEN

T.T_SCORE * 90 / 100

ELSE

T.T_SCORE * 80 / 100

END

ELSE 0

END) 一月份,

AVG(CASE

WHEN TO_CHAR(T.T_DATA, 'MM') = '02' AND T.NUM = 3 THEN

CASE

WHEN RN = 1 THEN

T.T_SCORE * 120 / 100

WHEN RN = 2 THEN

T.T_SCORE * 100 / 100

ELSE

T.T_SCORE * 80 / 100

END

WHEN TO_CHAR(T.T_DATA, 'MM') = '02' AND T.NUM = 4 THEN

CASE

WHEN RN = 1 THEN

T.T_SCORE * 120 / 100

WHEN RN = 2 THEN

T.T_SCORE * 110 / 100

WHEN RN = 3 THEN

T.T_SCORE * 90 / 100

ELSE

T.T_SCORE * 80 / 100

END

ELSE

END) 二月

FROM (SELECT A.T_DATA,

A.T_NAME,

A.T_SCORE,

ROW_NUMBER() OVER(PARTITION BY A.T_NAME ORDER BY A.T_DATA DESC) RN,

B.NUM

FROM temp_avg_score A

LEFT JOIN (SELECT T_NAME, COUNT(1) NUM

FROM temp_avg_score

GROUP BY T_NAME) B ON A.T_NAME = B.T_NAME) T

GROUP BY T.T_NAME;

oracle 取平均值

你好,如果格式都如你贴图的一样的话可以用这种最笨的方式全一个个化成数值型,然后相加取值。

select CHECK_NORM,

(to_number(substr(CHECK_INFO, 1, 4)) +

to_number(substr(CHECK_INFO, 6, 4)) +

to_number(substr(CHECK_INFO, 11, 4)) +

to_number(substr(CHECK_INFO, 16, 4)) +

to_number(substr(CHECK_INFO, 21, 4)) +

to_number(substr(CHECK_INFO, 26, 4)) +

to_number(substr(CHECK_INFO, 31, 4)) +

to_number(substr(CHECK_INFO, 36, 4)) +

to_number(substr(CHECK_INFO, 41, 4)) +

to_number(substr(CHECK_INFO, 46, 4))) / 10

from 表名;

如果格式不统一,建议如2楼的,把字符型中的‘/’全部替换成‘+’,然后拼接出来一个sql,执行处理。

望采纳,谢谢。

oracle这个函数如何loop循环后的求平均值

语法:

[ lable_name]

loop

statement...

end loop [lable_name]

请点击输入图片描述

注释:lable_name:loop语句的标签,与结构控制语句case类似

loop:循环的开始

statement:循环体,也就是需要重复执行的语句

end loop:循环结束标志

基本loop循环由于没有控制循环结束语句,所以循环体中需要判断是否循环结束来控制循环,要不然会出现死循环的情况

1ORACLE中的结构控制(case语句)

请点击输入图片描述

一、使用EXIT...WHEN来判断是否循环结束

例:求1+2+..+100的和

DECLARE

str1 number;

nu   number;

BEGIN

str1 := 1 ;

nu := 0 ;

loop_text

LOOP

nu := nu + str1;

str1 := str1+1;

EXIT loop_text WHEN str1100 ;

END LOOP;

DBMS_OUTPUT.PUT_LINE('循环结束。1+2+。。。+100的结果为:'||nu);

END;

请点击输入图片描述

代码解析:

第2--6行:声明两个加数并赋予初始值

第9--10:循环体,做四则运算,加数nu + 加数str1 的和在赋值给加数nu

第11行:判断str1是否为真,为真则退出,为假则继续循环

第13行:循环结束后打印输出结果

请点击输入图片描述

二、使用IF语句来判断是否循环结束

例:求1+2+..+100的和

DECLARE

str1 number;

nu   number;

BEGIN

str1 := 1 ;

nu := 0 ; 

loop_text

LOOP       

nu := nu + str1; 

str1 := str1+1;   

IF str1100 THEN

DBMS_OUTPUT.PUT_LINE('循环结束');

EXIT loop_text;

END IF; 

END LOOP; 

DBMS_OUTPUT.PUT_LINE('1+2+。。。+100的结果为:'||nu);

END;

1ORACLE中的结构控制(IF语句)

请点击输入图片描述

代码解析:

第1-6行与上诉一致,声明两个参数然后在赋值初始化

第11-13行:使用IF语句做判断,条件为真这执行退出语句EXIT,条件为假则跳过继续循环

请点击输入图片描述

oracle怎么查询每年每月中零点到四点的平均值?

写个大概意思,毕竟我并不知道你的表结构是什么样的。

你的表格是什么样的,特别是回见结构,如果是“年月日时分秒”结构的,那么首先单独截取"时"(不是截取年月日时,而是单独截取时),截取范围是4,这样出来的结果是每天0-4点的所有值。

然后开始考虑分组,你说的是每年每月的平均值,那么分组应该是“年月”,然后再avg一下你要平均的值应该就可以了。


标题名称:oracle怎么求平均值,oracle求平均数函数
网站链接:http://ybzwz.com/article/hcdejh.html