一、oracle有自己的定時器,創(chuàng)建一個job每十五分鐘執(zhí)行一次,把查詢的結(jié)果更新到一張表中,從這個表里取值就行了。
在方山等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供成都網(wǎng)站制作、成都網(wǎng)站設(shè)計 網(wǎng)站設(shè)計制作定制網(wǎng)站,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),品牌網(wǎng)站制作,成都全網(wǎng)營銷,外貿(mào)網(wǎng)站制作,方山網(wǎng)站建設(shè)費用合理。
二、在工程中解決的話看你用的是什么,像spring之類的都有定時器。自己寫個定時器每十五分鐘執(zhí)行一次就行了。
三、如果是前臺發(fā)起的就更簡單了,用setInterval循環(huán)執(zhí)行,周期為十五分鐘。
你好,如果格式都如你貼圖的一樣的話可以用這種最笨的方式全一個個化成數(shù)值型,然后相加取值。
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í)行處理。
望采納,謝謝。
可以參考如下:
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;
你這思路有點亂,應(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
語法:
[ 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)
請點擊輸入圖片描述