我首先创建一个子查询,以显示按当天的每个小时分组的(complete_dt-create_dt)的MAX值。然后,我按天分组,因为我想显示每天的最大值(按小时最大分组)。
我得到的是每一行中出现的所有天数的MAX值:
max(TIMELENGTH) | DAY 210.5 | 16 210.5 | 17 210.5 | 27
这是我使用的查询,我做错了什么:
select max(hours.timelength) TimeLength, TO_CHAR(trunc(t.create_dt), 'DD') DAY
FROM ORDERS t,
(select round(avg(24 * 3600 * (m.complete_dt-m.create_dt)),1) TimeLength
from ORDERS m
GROUP BY TRUNC(m.create_dt, 'HH')) hours
where t.order_status_id in (80)
GROUP BY TO_CHAR(trunc(t.create_dt), 'DD')
谢谢,
答案 0 :(得分:0)
这可能会给你你想要的东西。
select max(hours.timelength) TimeLength, hours.Day
FROM
(
select
round(avg(24 * 3600 * (m.complete_dt-m.create_dt)),1) TimeLength,
TO_CHAR(trunc(t.create_dt), 'DD') Day,
TRUNC(m.create_dt, 'HH') hours
from ORDERS m
where t.order_status_id in (80)
GROUP BY TRUNC(m.create_dt, 'HH'), TO_CHAR(trunc(t.create_dt), 'DD')
) hours
GROUP BY hours.Day
您的原始查询在t和小时之间没有加入
答案 1 :(得分:0)
我想你想要这样的东西:
select max(hours.timelength) as TimeLength, trunc(firstcreate_dt) as DAY
FROM ORDERS t,
(select round(avg(24 * 3600 * (m.complete_dt-m.create_dt)),1) TimeLength,
min(create_dt) as firstcreate_dt
from ORDERS m
where t.order_status_id in (80)
GROUP BY TRUNC(m.create_dt, 'YYYY-MM-DD HH')
) hours
GROUP BY trunc(firstcreate_dt)
您不想使用to_char(. . . , 'DD')
,因为它只返回该月的某一天。
此外,在表达式to_char(trunc(t.create_dt), 'DD')
中,trunc()
是不必要的。