Ich habe eine Reihe von Metriken von Sekunde gespeichert. Ich versuche, einen Bericht zu erstellen, der die folgenden erreichen wird:Wählen Sie leere Daten für keine Daten von Oracle?
- avg Metrik Stunde
- max pro Stunde
- min pro Stunde
- enthalten das Datum/Zeit stundenlang mit keine Daten
Diese Abfrage erzeugt fast die richtigen Ergebnisse. Seit Tagen gibt es jedoch Daten. Ich möchte NICHT, dass die UNION-Ergebnisse Nullwerte ergeben. Ich möchte, dass diese abfallen.
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;
Ich bin nicht einmal sicher, ob dies der richtige Weg ist, um die Daten abzufragen. Irgendein Rat?
Es scheint ein Fehler irgendwo in der Aussage. Ich habe das Komma aus SELECT in dummy_hours entfernt. Ich habe bestätigt, dass beide Abfragen unabhängig voneinander funktionieren (dummy_hours und log_aggregate). Wenn ich die Abfrage ausführe, erhalte ich jedoch den Fehler "fehlender Ausdruck". –
Ich korrigierte das Komma und enthielt einen Tabellenalias in der ORDER BY (ich vermute, dass das den Fehler verursacht hat). Kannst du bestätigen? –
Ich bekomme immer noch den gleichen Fehler. (Fehlender Ausdruck). Ich kann jede der Abfragen unabhängig ausführen und sie funktionieren gut. Aber wenn kombiniert, erhalte ich den Fehler. –