0

我首先创建一个子查询来显示 (complete_dt-create_dt) 的 MAX 值,按一天中的每个小时分组。然后,我按天分组,因为我想显示每天的最大值(按小时最大值分组)。

我得到的是每一行中显示的所有日期的 MAX 值:

最大(时间长度)| 天
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')

谢谢,

4

2 回答 2

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 和 hours 之间没有连接

于 2013-02-11T10:18:12.610 回答
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')中 thetrunc()是不必要的。

于 2013-02-11T14:35:23.837 回答