oracle如何求平均數(shù) oracle 求平均

oracle 取平均值

你好,如果格式都如你貼圖的一樣的話可以用這種最笨的方式全一個個化成數(shù)值型,然后相加取值。

讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價值的長期合作伙伴,公司提供的服務(wù)項目有:域名注冊、網(wǎng)頁空間、營銷軟件、網(wǎng)站建設(shè)、太白網(wǎng)站維護、網(wǎng)站推廣。

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 表名;

如果格式不統(tǒng)一,建議如2樓的,把字符型中的‘/’全部替換成‘+’,然后拼接出來一個sql,執(zhí)行處理。

望采納,謝謝。

oracle這個函數(shù)如何loop循環(huán)后的求平均值

語法:

[ lable_name]

loop

statement...

end loop [lable_name]

請點擊輸入圖片描述

注釋:lable_name:loop語句的標(biāo)簽,與結(jié)構(gòu)控制語句case類似

loop:循環(huán)的開始

statement:循環(huán)體,也就是需要重復(fù)執(zhí)行的語句

end loop:循環(huán)結(jié)束標(biāo)志

基本loop循環(huán)由于沒有控制循環(huán)結(jié)束語句,所以循環(huán)體中需要判斷是否循環(huán)結(jié)束來控制循環(huán),要不然會出現(xiàn)死循環(huán)的情況

1ORACLE中的結(jié)構(gòu)控制(case語句)

請點擊輸入圖片描述

一、使用EXIT...WHEN來判斷是否循環(huán)結(jié)束

例:求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('循環(huán)結(jié)束。1+2+。。。+100的結(jié)果為:'||nu);

END;

請點擊輸入圖片描述

代碼解析:

第2--6行:聲明兩個加數(shù)并賦予初始值

第9--10:循環(huán)體,做四則運算,加數(shù)nu + 加數(shù)str1 的和在賦值給加數(shù)nu

第11行:判斷str1是否為真,為真則退出,為假則繼續(xù)循環(huán)

第13行:循環(huán)結(jié)束后打印輸出結(jié)果

請點擊輸入圖片描述

二、使用IF語句來判斷是否循環(huán)結(jié)束

例:求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('循環(huán)結(jié)束');

EXIT loop_text;

END IF;?

END LOOP;?

DBMS_OUTPUT.PUT_LINE('1+2+。。。+100的結(jié)果為:'||nu);

END;

1ORACLE中的結(jié)構(gòu)控制(IF語句)

請點擊輸入圖片描述

代碼解析:

第1-6行與上訴一致,聲明兩個參數(shù)然后在賦值初始化

第11-13行:使用IF語句做判斷,條件為真這執(zhí)行退出語句EXIT,條件為假則跳過繼續(xù)循環(huán)

請點擊輸入圖片描述

ORACLE 如何對COUNT()列的值求平均數(shù)

你這思路有點亂,應(yīng)該是兩個查詢:

SELECT G."ID",G."NAME",COUNT(*)

FROM "GROUPS" G,USERS U

WHERE G."ID"=U."GROUPID"

GROUP BY G."NAME",G."ID"

select avg(cnt) from

(SELECT G."ID",G."NAME",COUNT(*) cnt

FROM "GROUPS" G,USERS U

WHERE G."ID"=U."GROUPID"

GROUP BY G."NAME",G."ID"

) tmp

oracle查詢按記錄個數(shù),按比例匯總后求平均值

可以參考如下:

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;

網(wǎng)頁名稱:oracle如何求平均數(shù) oracle 求平均
網(wǎng)頁URL:http://muchs.cn/article26/hhesjg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供搜索引擎優(yōu)化靜態(tài)網(wǎng)站、服務(wù)器托管網(wǎng)頁設(shè)計公司、定制開發(fā)企業(yè)網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)公司