0

まず、(complete_dt-create_dt) の MAX 値を 1 日の HOUR ごとにグループ化して表示するサブクエリを作成します。次に、日ごとに最大値 (時間ごとにグループ化された最大値) を表示したいので、日ごとにグループ化します。

私が得るのは、すべての行に表示されたすべての日の最大値です:

max(TIMELENGTH) | 日
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 と時間の間に結合がありませんでした

于 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')ではtrunc()は不要です。

于 2013-02-11T14:35:23.837 に答える