2010-11-23 17 views
1

私は一連のメトリックを2番目に格納しています。私は、次のことを達成するレポートを作成しようとしています:オラクルからデータ日付の空の日付を選択しますか?

  • 平均メトリックを時間
  • 最大で毎時
  • 分を毎時
  • が データのない時間の日付/時刻を含める

このクエリは、ほぼ正しい結果を生成します。しかし、データがある日には、NULL値を生成するUNION結果は望ましくありません。私はそれらを降下したい。

SELECT HOUR, METRIC, MINIMUM, MAXIMUM FROM (
select 
    to_char(day,'DD-MON-YY "-" HH24":00"') AS HOUR, 
    round(avg(duration), 2) AS METRIC, 
    round(min(duration), 2) AS MINIMUM, 
    round(max(duration), 2) AS MAXIMUM 
from log_events 
where day > to_date('08-NOV-10', 'DD-MON-YY') 
    and day < to_date('08-NOV-10', 'DD-MON-YY') + 2 
    and company = 'company A' 
    and component = 'api layer' 
    and event_label = 'execution request' 
    group by to_char(day,'DD-MON-YY "-" HH24":00"') 
    UNION 
    select to_char(trunc(to_date('08-NOV-10', 'DD-MON-YY'))+(level-1)/24, 'DD-MON-YY "-" HH24":00"') HOUR, 
    null as METRIC, 
    null as MINIMUM, 
    null as MAXIMUM 
    from dual connect by level <= 48 
) 
order by HOUR; 

これがデータを照会する正しい方法であるかどうかはわかりません。何かアドバイス?

答えて

1

時間でインラインテーブルを作成して、あなたのlog_eventsテーブルに参加さ左:

select 
    dummy_hours.hour, 
    log_aggregate.METRIC, 
    log_aggregate.MINIMUM, 
    log_aggregate.MAXIMUM 
from (
    select to_char(trunc(to_date('08-NOV-10', 'DD-MON-YY'))+(level-1)/24, 'DD-MON-YY "-" HH24":00"') HOUR 
    from dual connect by level <= 48 
) dummy_hours, (
    select to_char(day,'DD-MON-YY "-" HH24":00"') AS HOUR, 
    round(avg(duration), 2) AS METRIC, 
    round(min(duration), 2) AS MINIMUM, 
    round(max(duration), 2) AS MAXIMUM 
    from log_events 
    where day between to_date('08-NOV-10', 'DD-MON-YY') and to_date('08-NOV-10', 'DD-MON-YY') + 2 
    and day > to_date('08-NOV-10', 'DD-MON-YY') 
    and day < to_date('08-NOV-10', 'DD-MON-YY') + 2 
    and company = 'company A' 
    and component = 'api layer' 
    and event_label = 'execution request' 
    group by to_char(day,'DD-MON-YY "-" HH24":00"') 
) log_aggregate 
where dummy_hours.hour = log_aggregate.hour(+) 
order by dummy_hours.hour; 
+0

どこかのステートメントにエラーがある表示されます。私はdummy_hoursのSELECTからコンマを削除しました。両方のクエリが(dummy_hoursとlog_aggregate)独立して動作することを確認しました。しかし、私は、クエリを実行すると、私はエラー "行方不明"を取得します。 –

+0

私はコンマを訂正し、ORDER BYにテーブルエイリアスを含めました(私はそのエラーの原因と思われます)。あなたは確認できますか? –

+0

私はまだ同じエラーが発生します。 (行方不明)。私はそれぞれのクエリを独立して実行することができ、正常に動作します。しかし、組み合わせると、私はエラーを取得します。 –

関連する問題