Non ho una stazione Oracle su cui testare, ma dovresti essere in grado di avvolgere l'aggregatore attorno al tuo SELECT
come sottoquery/tabella derivata/vista in linea
Quindi sarebbe (NON TESTATO!!)
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
Ecco alcune letture al riguardo:
http://www.devshed.com/c/a/Oracle/Inserting-SubQueries-in-SELECT-Statements-in-Oracle/3/
MODIFICA: Anche se normalmente è un cattivo idea di selezionare entrambi il MIN
e MAX
in un'unica domanda.
EDIT2: Il problema min/max è correlato al modo in cui alcuni RDBMS (incluso Oracle) gestiscono le aggregazioni su colonne indicizzate. Potrebbe non influire su questa particolare query, ma la premessa è che è facile utilizzare l'indice per trovare il MIN
o il MAX
ma non entrambi contemporaneamente perché qualsiasi indice potrebbe non essere utilizzato in modo efficace.
Ecco alcune letture al riguardo:
http://momendba.blogspot.com/2008/07/min-and-max-functions-in-single-query.html