CREATE OR REPLACE PACKAGE PADINFODATA.INF_RESOURCE_STATS_COUNTER IS /********************************************************************* * 功能描述: 按照周 月范围统计资讯浏览, 点赞, 评论, 分享等所有业务线RANK数据 * * 执行时间:每日 2:30执行 * 执行频次:每天执行一次 *********************************************************************/ PROCEDURE RESOURCE_RANK_STATS(O_MSG OUT VARCHAR2); /********************************************************************* * 功能描述: 按照周 月范围统计资讯浏览, 点赞, 评论, 分享等某个业务线RANK数据 * * 执行时间:每日 2:30执行 * 执行频次:每天执行一次 *********************************************************************/ PROCEDURE RESOURCE_RANK_BIZ_SERIES_STATS(I_BIZ_SERIES IN VARCHAR2); /********************************************************************* * 功能描述: 维护某业务线当天的浏览RANK数据 * * 执行时间:每日 2:30执行 * 执行频次:每天执行一次 *********************************************************************/ PROCEDURE INC_TODAY_RANK_STATS(I_RESOURCE_ID IN INF_RESOURCE_VIEW.RESOURCE_ID%TYPE,I_BIZ_SERIES IN VARCHAR2); END INF_RESOURCE_STATS_COUNTER; / GRANT EXECUTE ON PADINFODATA.INF_RESOURCE_STATS_COUNTER TO PADINFOOPR;
CREATE OR REPLACE PACKAGE BODY PADINFODATA.INF_RESOURCE_STATS_COUNTER IS /********************************************************************* * 功能描述: 按照周 月范围统计资讯浏览, 点赞, 评论, 分享等所有业务线RANK数据 * * 执行时间:每日 2:30执行 * 执行频次:每天执行一次 *********************************************************************/ PROCEDURE RESOURCE_RANK_STATS(O_MSG OUT VARCHAR2) IS V_BIZ_SERIES VARCHAR2(30); CURSOR C_RES_BIZ_SERIES IS SELECT BIZ_SERIES FROM INF_BUSSINESS; BEGIN OPEN C_RES_BIZ_SERIES; LOOP FETCH C_RES_BIZ_SERIES INTO V_BIZ_SERIES; EXIT WHEN C_RES_BIZ_SERIES%NOTFOUND; RESOURCE_RANK_BIZ_SERIES_STATS(V_BIZ_SERIES); END LOOP; CLOSE C_RES_BIZ_SERIES; EXCEPTION WHEN OTHERS THEN ROLLBACK; IF O_MSG IS NULL THEN O_MSG := '资讯排行表统计异常' || SQLCODE || SUBSTR(SQLERRM, 1, 200); END IF; END RESOURCE_RANK_STATS; /********************************************************************* * 功能描述: 按照周 月范围统计资讯浏览, 点赞, 评论, 分享等某个业务线RANK数据 * * 执行时间:每日 2:30执行 * 执行频次:每天执行一次 *********************************************************************/ PROCEDURE RESOURCE_RANK_BIZ_SERIES_STATS(I_BIZ_SERIES IN VARCHAR2) IS BEGIN -- 执行插入、修改前对排行表周(7天:VIEW_WEEK+VIEW_TODAY)、月统计(31天:VIEW_MONTH+VIEW_TODAY)先清零 UPDATE INF_RESOURCE_RANK SET VIEW_TODAY = 0, VIEW_WEEK = 0, VIEW_MONTH = 0, ALL_COMMENT_TODAY = 0, ALL_COMMENT_WEEK = 0, ALL_COMMENT_MONTH = 0, ALL_THUMB_TODAY = 0, ALL_THUMB_WEEK = 0, ALL_THUMB_MONTH = 0, CUST_THUMB_TODAY = 0, CUST_THUMB_WEEK = 0, CUST_THUMB_MONTH = 0 WHERE BIZ_SERIES=I_BIZ_SERIES; COMMIT; ---VIEW MERGE MERGE INTO INF_RESOURCE_RANK A USING (SELECT VIEW_MONTH_TMP.RESOURCE_ID, VIEW_MONTH_TMP.BIZ_SERIES, VIEW_MONTH_TMP.VIEW_MONTH, VIEW_WEEK_TMP.VIEW_WEEK FROM (SELECT RESV.RESOURCE_ID, EMP.BIZ_SERIES AS BIZ_SERIES, COUNT(1) AS VIEW_MONTH FROM INF_RESOURCE_VIEW RESV INNER JOIN INF_EMPLOYEE EMP ON EMP.PAIC_UM_NUM = NVL(RESV.SENDER, RESV.VIEWER) WHERE RESV.VIEW_DATE BETWEEN TRUNC(SYSDATE - 30) AND TRUNC(SYSDATE) AND EMP.BIZ_SERIES = I_BIZ_SERIES GROUP BY RESV.RESOURCE_ID, EMP.BIZ_SERIES) VIEW_MONTH_TMP LEFT JOIN (SELECT RESV.RESOURCE_ID AS RESOURCE_ID, EMP.BIZ_SERIES AS BIZ_SERIES, COUNT(1) AS VIEW_WEEK FROM INF_RESOURCE_VIEW RESV INNER JOIN INF_EMPLOYEE EMP ON EMP.PAIC_UM_NUM = NVL(RESV.SENDER, RESV.VIEWER) WHERE RESV.VIEW_DATE BETWEEN TRUNC(SYSDATE - 6) AND TRUNC(SYSDATE) AND EMP.BIZ_SERIES = I_BIZ_SERIES GROUP BY RESV.RESOURCE_ID, EMP.BIZ_SERIES) VIEW_WEEK_TMP ON (VIEW_MONTH_TMP.RESOURCE_ID = VIEW_WEEK_TMP.RESOURCE_ID AND VIEW_MONTH_TMP.BIZ_SERIES = VIEW_WEEK_TMP.BIZ_SERIES)) B ON (A.RESOURCE_ID = B.RESOURCE_ID AND A.BIZ_SERIES = B.BIZ_SERIES) WHEN MATCHED THEN UPDATE SET A.VIEW_WEEK = B.VIEW_WEEK, A.VIEW_MONTH = B.VIEW_MONTH WHEN NOT MATCHED THEN INSERT (ID_RESOURCE_RANK, RESOURCE_ID, VIEW_TODAY, VIEW_WEEK, VIEW_MONTH, SHARE_TODAY, SHARE_WEEK, SHARE_MONTH, ALL_COMMENT_TODAY, ALL_COMMENT_WEEK, ALL_COMMENT_MONTH, ALL_THUMB_TODAY, ALL_THUMB_WEEK, ALL_THUMB_MONTH, CUST_THUMB_TODAY, CUST_THUMB_WEEK, CUST_THUMB_MONTH, BIZ_SERIES) VALUES (SYS_GUID(), B.RESOURCE_ID, 0,B.VIEW_WEEK, B.VIEW_MONTH, 0,0,0, 0,0,0, 0,0,0, 0,0,0, I_BIZ_SERIES); COMMIT; ---COMMENT THUMB MERGE MERGE INTO INF_RESOURCE_RANK A USING (SELECT NVL(RESCOMMENT.RESOURCE_ID, RESTHUMB.RESOURCE_ID) AS RESOURCE_ID, NVL(RESCOMMENT.BIZ_SERIES, RESTHUMB.BIZ_SERIES) AS BIZ_SERIES, NVL(RESCOMMENT.ALL_COMMENT_MONTH, 0) AS ALL_COMMENT_MONTH, NVL(RESCOMMENT.ALL_COMMENT_WEEK,0) AS ALL_COMMENT_WEEK, NVL(RESTHUMB.ALL_THUMB_MONTH,0) AS ALL_THUMB_MONTH, NVL(RESTHUMB.ALL_THUMB_WEEK,0) AS ALL_THUMB_WEEK, NVL(RESTHUMB.CUST_THUMB_WEEK,0) AS CUST_THUMB_WEEK, NVL(RESTHUMB.CUST_THUMB_MONTH,0) AS CUST_THUMB_MONTH FROM ---COMMENT (SELECT T_ALL_COMMENT_MONTH.RESOURCE_ID AS RESOURCE_ID, T_ALL_COMMENT_MONTH.BIZ_SERIES AS BIZ_SERIES, T_ALL_COMMENT_MONTH.ALL_COMMENT_MONTH AS ALL_COMMENT_MONTH, T_ALL_COMMENT_WEEK.ALL_COMMENT_WEEK AS ALL_COMMENT_WEEK FROM (SELECT RESC.RESOURCE_ID, EMP.BIZ_SERIES AS BIZ_SERIES, COUNT(1) AS ALL_COMMENT_MONTH FROM INF_RESOURCE_COMMENT RESC INNER JOIN INF_EMPLOYEE EMP ON EMP.PAIC_UM_NUM = NVL(RESC.SENDER, RESC.COMMENTOR) WHERE RESC.SUBMIT_DATE BETWEEN TRUNC(SYSDATE - 30) AND TRUNC(SYSDATE) AND EMP.BIZ_SERIES = I_BIZ_SERIES AND RESC.ID_PARENT_COMMENT IS NULL GROUP BY RESC.RESOURCE_ID, EMP.BIZ_SERIES) T_ALL_COMMENT_MONTH LEFT JOIN (SELECT RESC.RESOURCE_ID AS RESOURCE_ID, EMP.BIZ_SERIES AS BIZ_SERIES, COUNT(1) AS ALL_COMMENT_WEEK FROM INF_RESOURCE_COMMENT RESC INNER JOIN INF_EMPLOYEE EMP ON EMP.PAIC_UM_NUM = NVL(RESC.SENDER, RESC.COMMENTOR) WHERE RESC.SUBMIT_DATE BETWEEN TRUNC(SYSDATE - 6) AND TRUNC(SYSDATE) AND EMP.BIZ_SERIES = I_BIZ_SERIES AND RESC.ID_PARENT_COMMENT IS NULL GROUP BY RESC.RESOURCE_ID, EMP.BIZ_SERIES) T_ALL_COMMENT_WEEK ON (T_ALL_COMMENT_MONTH.RESOURCE_ID = T_ALL_COMMENT_WEEK.RESOURCE_ID AND T_ALL_COMMENT_MONTH.BIZ_SERIES = T_ALL_COMMENT_WEEK.BIZ_SERIES)) RESCOMMENT FULL JOIN ---THUMB --ALL THUMB (SELECT T_ALL_THUMB_MONTH.RESOURCE_ID AS RESOURCE_ID, T_ALL_THUMB_MONTH.BIZ_SERIES AS BIZ_SERIES, T_ALL_THUMB_MONTH.ALL_THUMB_MONTH AS ALL_THUMB_MONTH, T_ALL_THUMB_WEEK.ALL_THUMB_WEEK AS ALL_THUMB_WEEK, RESCTW.CUST_THUMB_WEEK AS CUST_THUMB_WEEK, RESCTM.CUST_THUMB_MONTH AS CUST_THUMB_MONTH FROM (SELECT REST.RESOURCE_ID AS RESOURCE_ID, EMP.BIZ_SERIES AS BIZ_SERIES, COUNT(1) AS ALL_THUMB_MONTH FROM INF_RESOURCE_THUMB REST INNER JOIN INF_EMPLOYEE EMP ON EMP.PAIC_UM_NUM = NVL(REST.SENDER, REST.THUMBER) WHERE REST.THUMB_DATE BETWEEN TRUNC(SYSDATE - 30) AND TRUNC(SYSDATE) AND EMP.BIZ_SERIES = I_BIZ_SERIES GROUP BY REST.RESOURCE_ID, EMP.BIZ_SERIES) T_ALL_THUMB_MONTH LEFT JOIN (SELECT REST.RESOURCE_ID AS RESOURCE_ID, EMP.BIZ_SERIES AS BIZ_SERIES, COUNT(1) AS ALL_THUMB_WEEK FROM INF_RESOURCE_THUMB REST INNER JOIN INF_EMPLOYEE EMP ON EMP.PAIC_UM_NUM = NVL(REST.SENDER, REST.THUMBER) WHERE REST.THUMB_DATE BETWEEN TRUNC(SYSDATE - 6) AND TRUNC(SYSDATE) AND EMP.BIZ_SERIES = I_BIZ_SERIES GROUP BY REST.RESOURCE_ID, EMP.BIZ_SERIES) T_ALL_THUMB_WEEK ON (T_ALL_THUMB_MONTH.RESOURCE_ID = T_ALL_THUMB_WEEK.RESOURCE_ID AND T_ALL_THUMB_MONTH.BIZ_SERIES = T_ALL_THUMB_WEEK.BIZ_SERIES) --CUS THUMB LEFT JOIN (SELECT REST.RESOURCE_ID AS RESOURCE_ID, EMP.BIZ_SERIES AS BIZ_SERIES, COUNT(1) AS CUST_THUMB_WEEK FROM INF_RESOURCE_THUMB REST INNER JOIN INF_EMPLOYEE EMP ON EMP.PAIC_UM_NUM = REST.SENDER WHERE REST.THUMB_DATE BETWEEN TRUNC(SYSDATE - 6) AND TRUNC(SYSDATE) AND EMP.BIZ_SERIES = I_BIZ_SERIES AND REST.THUMB_SOURCE = 'WEIXIN' GROUP BY REST.RESOURCE_ID, EMP.BIZ_SERIES) RESCTW ON (T_ALL_THUMB_MONTH.RESOURCE_ID = RESCTW.RESOURCE_ID AND T_ALL_THUMB_MONTH.BIZ_SERIES = RESCTW.BIZ_SERIES) LEFT JOIN (SELECT REST.RESOURCE_ID AS RESOURCE_ID, EMP.BIZ_SERIES AS BIZ_SERIES, COUNT(1) AS CUST_THUMB_MONTH FROM INF_RESOURCE_THUMB REST INNER JOIN INF_EMPLOYEE EMP ON EMP.PAIC_UM_NUM = REST.SENDER WHERE REST.THUMB_DATE BETWEEN TRUNC(SYSDATE - 30) AND TRUNC(SYSDATE) AND EMP.BIZ_SERIES = I_BIZ_SERIES AND REST.THUMB_SOURCE = 'WEIXIN' GROUP BY REST.RESOURCE_ID, EMP.BIZ_SERIES) RESCTM ON (T_ALL_THUMB_MONTH.RESOURCE_ID = RESCTM.RESOURCE_ID AND T_ALL_THUMB_MONTH.BIZ_SERIES = RESCTM.BIZ_SERIES) ) RESTHUMB ON (RESCOMMENT.BIZ_SERIES = RESTHUMB.BIZ_SERIES AND RESCOMMENT.RESOURCE_ID = RESTHUMB.RESOURCE_ID)) B ON (A.RESOURCE_ID = B.RESOURCE_ID AND B.BIZ_SERIES = A.BIZ_SERIES ) WHEN MATCHED THEN UPDATE SET A.ALL_COMMENT_WEEK = B.ALL_COMMENT_WEEK, A.ALL_COMMENT_MONTH = B.ALL_COMMENT_MONTH, A.ALL_THUMB_WEEK = B.ALL_THUMB_WEEK, A.ALL_THUMB_MONTH = B.ALL_THUMB_MONTH, A.CUST_THUMB_WEEK = B.CUST_THUMB_WEEK, A.CUST_THUMB_MONTH = B.CUST_THUMB_MONTH WHEN NOT MATCHED THEN INSERT (ID_RESOURCE_RANK, RESOURCE_ID, VIEW_TODAY, VIEW_WEEK, VIEW_MONTH, SHARE_TODAY, SHARE_WEEK, SHARE_MONTH, ALL_COMMENT_TODAY, ALL_COMMENT_WEEK, ALL_COMMENT_MONTH, ALL_THUMB_TODAY, ALL_THUMB_WEEK, ALL_THUMB_MONTH, CUST_THUMB_TODAY, CUST_THUMB_WEEK, CUST_THUMB_MONTH, BIZ_SERIES) VALUES (SYS_GUID(),B.RESOURCE_ID, 0,0,0, 0,0,0, 0,B.ALL_COMMENT_WEEK,B.ALL_COMMENT_MONTH, 0,B.ALL_THUMB_WEEK,B.ALL_THUMB_MONTH, 0,B.CUST_THUMB_WEEK,B.CUST_THUMB_MONTH, I_BIZ_SERIES); COMMIT; END RESOURCE_RANK_BIZ_SERIES_STATS; /********************************************************************* * 功能描述: 维护某业务线当天的浏览RANK数据 * * 执行时间:每日 2:30执行 * 执行频次:每天执行一次 *********************************************************************/ PROCEDURE INC_TODAY_RANK_STATS(I_RESOURCE_ID IN INF_RESOURCE_VIEW.RESOURCE_ID%TYPE,I_BIZ_SERIES IN VARCHAR2) IS BEGIN MERGE INTO INF_RESOURCE_RANK A USING (SELECT I_RESOURCE_ID AS RESOURCE_ID,I_BIZ_SERIES AS BIZ_SERIES FROM DUAL) B ON (A.RESOURCE_ID = B.RESOURCE_ID AND A.BIZ_SERIES = B.BIZ_SERIES) WHEN MATCHED THEN UPDATE SET A.VIEW_TODAY = A.VIEW_TODAY + 1 WHEN NOT MATCHED THEN INSERT (ID_RESOURCE_RANK, RESOURCE_ID, VIEW_TODAY, VIEW_WEEK, VIEW_MONTH, SHARE_TODAY, SHARE_WEEK, SHARE_MONTH, ALL_COMMENT_TODAY, ALL_COMMENT_WEEK, ALL_COMMENT_MONTH, ALL_THUMB_TODAY, ALL_THUMB_WEEK, ALL_THUMB_MONTH, CUST_THUMB_TODAY, CUST_THUMB_WEEK, CUST_THUMB_MONTH, BIZ_SERIES) VALUES (SYS_GUID(),B.RESOURCE_ID, 1,0,0, 0,0,0, 0,0,0, 0,0,0, 0,0,0, B.BIZ_SERIES); COMMIT; END INC_TODAY_RANK_STATS; END INF_RESOURCE_STATS_COUNTER; /