WITH T AS
(
SELECT TO_CHAR(FIRST_TIME, 'YYYY-MM-DD') AS LOG_GEN_DAY,
TO_CHAR(SUM(DECODE(TO_CHAR(FIRST_TIME, 'YYYY-MM-DD'),
TO_CHAR(FIRST_TIME, 'YYYY-MM-DD'), 1, 0))
, '999') AS "LOG_SWITCH_NUM"
FROM V$LOG_HISTORY
WHERE FIRST_TIME < TRUNC(SYSDATE) --排除当前这一天
GROUP BY TO_CHAR(FIRST_TIME, 'YYYY-MM-DD'))
SELECT T.LOG_GEN_DAY
, T.LOG_SWITCH_NUM
, M.AVG_LOG_SWITCH_NUM
, (T.LOG_SWITCH_NUM-M.AVG_LOG_SWITCH_NUM) AS DIFF_SWITCH_NUM
FROM T CROSS JOIN
(
SELECT TO_CHAR(AVG(T.LOG_SWITCH_NUM),'999') AS AVG_LOG_SWITCH_NUM
FROM T
) M
ORDER BY T.LOG_GEN_DAY DESC;