Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Pobieranie min() kolumny count(*)

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




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oświadczenie wstaw Oracle, jeśli nie istnieje

  2. Wstaw obiekt BLOB w bazie danych Oracle za pomocą C#

  3. zapytanie sql do porównania wyników następujących zapytań

  4. Jak uzyskać wygenerowane klucze z wsadu wsadowego JDBC w Oracle?

  5. Maksymalna szerokość kolumny w buforze Oracle do pliku