Nie mam stacji Oracle do testowania, ale powinieneś być w stanie po prostu owinąć agregat wokół swojego SELECT
jako podzapytanie/tabela pochodna/widok wbudowany
Więc byłoby (NIETESTOWANE!!)
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
Oto kilka informacji na ten temat:
http://www.devshed.com/c/a/Oracle/Inserting-SubQueries-in-SELECT-Statements-in-Oracle/3/
EDYTUJ: Chociaż normalnie jest złe pomysł, aby wybrać oba MIN
i MAX
w jednym zapytaniu.
EDIT2: Problem min/maks jest związany ze sposobem, w jaki niektóre RDBMS (w tym Oracle) obsługują agregacje w indeksowanych kolumnach. Może to nie mieć wpływu na to konkretne zapytanie, ale założenie jest takie, że łatwo jest użyć indeksu do znalezienia MIN
lub MAX
ale nie oba jednocześnie, ponieważ każdy indeks może nie być skutecznie wykorzystywany.
Oto trochę czytania:
http://momendba.blogspot.com/2008/07/min-and-max-functions-in-single-query.html