Ich habe keine Oracle-Station zum Testen, aber Sie sollten in der Lage sein, den Aggregator einfach um Ihr SELECT
zu wickeln als Unterabfrage/abgeleitete Tabelle/Inline-Ansicht
Es wäre also (UNGETESTET!!)
SELECT
AVG(s.c)
, MIN(s.c)
, MAX(s.c)
, s.ID
FROM
--Note this is just your query
(select id, to_char(time), count(*) as c from vehicle_location group by id, to_char(time), min having id = 16) as s
GROUP BY s.ID
Hier ist etwas Lektüre dazu:
http://www.devshed.com/c/a/Oracle/Inserting-SubQueries-in-SELECT-Statements-in-Oracle/3/
BEARBEITEN: Obwohl es normalerweise schlecht ist Idee, beide auszuwählen die MIN
und MAX
in einer einzigen Abfrage.
EDIT2: Das Min/Max-Problem hängt damit zusammen, wie einige RDBMS (einschließlich Oracle) Aggregationen für indizierte Spalten handhaben. Dies wirkt sich möglicherweise nicht auf diese spezielle Abfrage aus, aber die Prämisse ist, dass es einfach ist, den Index zu verwenden, um entweder den MIN
zu finden oder das MAX
aber nicht beide gleichzeitig, da jeder Index möglicherweise nicht effektiv verwendet wird.
Hier ist etwas Lektüre dazu:
http://momendba.blogspot.com/2008/07/min-and-max-functions-in-single-query.html