Sql TRUNC(sysdate)和time_stamp>='16'和time_stamp
Sql TRUNC(sysdate)和time_stamp>='16'和time_stamp,sql,oracle,date,time,Sql,Oracle,Date,Time,TRUNC(sysdate)和time_stamp>='16'和time_stamp
TRUNC(sysdate)和time_stamp>='16'和time_stamp<'23'然后max_percent els NULL END)七天(prime),对不起,我的错误,对于在哪个RDBSM:)上工作会有太多的匆忙和混乱,编辑将时间包装到_TIMESTAMP()。试试看?(你基于数字的想法应该有效[0.041666/天=1小时],但不要在它们周围加引号,它们不是字符串,它们是数字……)
select
sdpt.DOWN_DESC,
avg(sdpt.max_percent_util) seven_day_prime,
avg(sday.max_percent_util) seven_day,
avg(sdb.max_percent_util) seven_day_business
from
(select down_desc, hour_stamp, max_percent_util from downstream_hour_facts
where ((hour_stamp >= sysdate-8 AND to_char(hour_stamp, 'HH24:MI') >= '16:00' AND to_char(hour_stamp, 'HH24:MI') <= '23:00')
or (hour_stamp >= sysdate-7 AND to_char(hour_stamp, 'HH24:MI') >= '16:00' AND to_char(hour_stamp, 'HH24:MI') <= '23:00')
or (hour_stamp >= sysdate-6 AND to_char(hour_stamp, 'HH24:MI') >= '16:00' AND to_char(hour_stamp, 'HH24:MI') <= '23:00')
or (hour_stamp >= sysdate-5 AND to_char(hour_stamp, 'HH24:MI') >= '16:00' AND to_char(hour_stamp, 'HH24:MI') <= '23:00')
or (hour_stamp >= sysdate-4 AND to_char(hour_stamp, 'HH24:MI') >= '16:00' AND to_char(hour_stamp, 'HH24:MI') <= '23:00')
or (hour_stamp >= sysdate-3 AND to_char(hour_stamp, 'HH24:MI') >= '16:00' AND to_char(hour_stamp, 'HH24:MI') <= '23:00')
or (hour_stamp >= sysdate-2 AND to_char(hour_stamp, 'HH24:MI') >= '16:00' AND to_char(hour_stamp, 'HH24:MI') <= '23:00')
or (hour_stamp >= sysdate-1 AND to_char(hour_stamp, 'HH24:MI') >= '16:00' AND to_char(hour_stamp, 'HH24:MI') <= '23:00'))) sdpt,
(select down_desc, hour_stamp, max_percent_util from downstream_hour_facts
where ((hour_stamp >= sysdate-8) or (hour_stamp >= sysdate-7) or (hour_stamp >= sysdate-6)
or (hour_stamp >= sysdate-5) or (hour_stamp >= sysdate-4) or (hour_stamp >= sysdate-3)
or (hour_stamp >= sysdate-2) or (hour_stamp >= sysdate-1))) sday,
(select down_desc, hour_stamp, max_percent_util from downstream_hour_facts
where ((hour_stamp >= sysdate-8 AND to_char(hour_stamp, 'HH24:MI') >= '8:00' AND to_char(hour_stamp, 'HH24:MI') <= '18:00')
or (hour_stamp >= sysdate-7 AND to_char(hour_stamp, 'HH24:MI') >= '08:00' AND to_char(hour_stamp, 'HH24:MI') <= '18:00')
or (hour_stamp >= sysdate-6 AND to_char(hour_stamp, 'HH24:MI') >= '08:00' AND to_char(hour_stamp, 'HH24:MI') <= '18:00')
or (hour_stamp >= sysdate-5 AND to_char(hour_stamp, 'HH24:MI') >= '08:00' AND to_char(hour_stamp, 'HH24:MI') <= '18:00')
or (hour_stamp >= sysdate-4 AND to_char(hour_stamp, 'HH24:MI') >= '08:00' AND to_char(hour_stamp, 'HH24:MI') <= '18:00')
or (hour_stamp >= sysdate-3 AND to_char(hour_stamp, 'HH24:MI') >= '08:00' AND to_char(hour_stamp, 'HH24:MI') <= '18:00')
or (hour_stamp >= sysdate-2 AND to_char(hour_stamp, 'HH24:MI') >= '08:00' AND to_char(hour_stamp, 'HH24:MI') <= '18:00')
or (hour_stamp >= sysdate-1 AND to_char(hour_stamp, 'HH24:MI') >= '08:00' AND to_char(hour_stamp, 'HH24:MI') <= '18:00'))) sdb
where sdpt.down_desc = sday.down_desc and sday.down_desc = sdb.down_desc
group by sdpt.DOWN_DESC
order by sdpt.down_desc
WITH
filtered_data AS
(
SELECT
down_desc,
hour_stamp,
TRUNC(hour_stamp) date_stamp,
hour_stamp - TRUNC(hour_stamp) time_stamp
FROM
downstream_hour_facts
WHERE
hour_stamp >= TRUNC(sysdate) - 8
)
SELECT
down_desc,
AVG(CASE WHEN date_stamp >= TRUNC(sysdate)
THEN max_percent ELSE NULL END) today,
AVG(CASE WHEN date_stamp < TRUNC(sysdate)
THEN max_percent ELSE NULL END) seven_day_all,
AVG(CASE WHEN date_stamp < TRUNC(sysdate)
AND time_stamp >= TO_TIMESTAMP('16:00', 'HH24:MI')
AND time_stamp < TO_TIMESTAMP('23:00', 'HH24:MI')
THEN max_percent ELSE NULL END) seven_day_prime,
AVG(CASE WHEN date_stamp < TRUNC(sysdate)
AND time_stamp >= TO_TIMESTAMP('08:00', 'HH24:MI')
AND time_stamp < TO_TIMESTAMP('16:00', 'HH24:MI')
THEN max_percent ELSE NULL END) seven_day_business
FROM
filtered_data
GROUP BY
down_desc
ORDER BY
down_desc