我正在使用oracle数据库,并有以下表格:
ID SYSTEM_NAME INTERFACE_NAME TIMEIN REQUEST ORDER_ID TARGET_SYSTEM_NAME TARGET_INTERFACE_NAME MSISDN HOST SOURCE
11 Logical AddProduct 02/11/2015 08:35:00 This is request 0 RFCO XXX Host
我想在每天一小时内选择最大请求数。就像当天和那小时以及过去15天一样的最大请求。
我正在使用此查询
SELECT * FROM (
SELECT count(*) as max_hour ,to_char(timein,'DD/MM/YYYY HH24') as date_hour
FROM LOG_REQUEST PARTITION(req_2015_02_24)
where SYSTEM_NAME='Logical'
and INTERFACE_NAME='AddProduct'
--and trunc(timein)>= trunc(SYSDATE-15)
GROUP BY to_char(timein,'DD/MM/YYYY HH24')
ORDER BY COUNT(*) desc
) where rownum =1;
因为我使用分区1天(日期),所以我在一天中的一个小时内给出了最大请求数,但我想要这个最后4或5个日期。
就像:
Max_Request_in_Hour Hour Date
89 21 02/02/2015
99 9 03/02/2015
29 8 04/02/2015
任何sql专家都可以帮我解决这个问题。
答案 0 :(得分:1)
SELECT proc_date, max(cnt_hour) as max_hour, max(date_hour) keep (dense_rank first order by cnt_hour desc) as date_hour
FROM (
SELECT count(*) as cnt_hour ,to_char(timein,'DD/MM/YYYY HH24') as date_hour, trunc(timein) as proc_date
FROM LOG_REQUEST PARTITION(req_2015_02_24)
where SYSTEM_NAME='Logical'
and INTERFACE_NAME='AddProduct'
--and trunc(timein)>= trunc(SYSDATE-15)
GROUP BY to_char(timein,'DD/MM/YYYY HH24'), trunc(timein)
)
group by proc_date;