写个大概意思,毕竟我并不知道你的表结构是什么样的.
然后开始考虑分组,你说的是每年每月的平均值,那么分组应该是"年月",然后再avg一下你要平均的值应该就可以了.
土嘎嘎的粉丝们大家好,如果格式都如你贴图的一样的话可以用这种最笨的方式全一个个化成数值型,然后相加取值.
select CHECK_NORM,
from 表名;
望采纳,谢谢.
可以参考如下:
CREATE TABLE TEMP_AVG_SCORE
(T_DATA DATE,
T_SCORE NUMBER(10)
) ;
COMMIT;
SELECT T.T_NAME 人员,
AVG(CASE
CASE
WHEN RN = 1 THEN
T.T_SCORE * 100 / 100
ELSE
END
T.T_SCORE * 110 / 100
ELSE 0
END) 一月份,
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;
语法:
[ lable_name]
loop
statement...
end loop [lable_name]
注释:lable_name:loop语句的标签,与结构控制语句case类似
loop:循环的开始
statement:循环体,也就是需要重复执行的语句
end loop:循环结束标志
基本loop循环由于没有控制循环结束语句,所以循环体中需要判断是否循环结束来控制循环,要不然会出现死循环的情况
①.ORACLE中的结构控制(case语句)
第一段:使用EXIT...WHEN来判断是否循环结束
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;
END;
代码解析:
第11行:判断str1是否为真,为真则退出,为假则继续循环
第二段:使用IF语句来判断是否循环结束
nu := 0 ;?
LOOP? ? ? ?
nu := nu ◆ str1;?
str1 := str1◆1;? ?
IF str1100 THEN
DBMS_OUTPUT.PUT_LINE('循环结束');
EXIT loop_text;
END IF;?
END LOOP;?
①.ORACLE中的结构控制(IF语句)
以上就是土嘎嘎小编为大家整理的oracle如何查询平均相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!