Oracle
 sql >> база данни >  >> RDS >> Oracle

Получаване на min() на колона count(*).

Нямам станция на Oracle, на която да тествам, но трябва да можете просто да обвиете агрегатора около вашия SELECT като подзаявка/изведена таблица/вграден изглед

Така ще бъде (НЕТЕСТВАНО!!)

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

Ето малко четиво за това:
http://www.devshed.com/c/a/Oracle/Inserting-SubQueries-in-SELECT-Statements-in-Oracle/3/

РЕДАКТИРАНЕ: Въпреки че обикновено е лошо идея да изберете и двете MIN и MAX в една заявка.

РЕДАКТИРАНЕ 2: Проблемът с мин./макс. е свързан с това как някои RDBMS (включително oracle) обработват агрегации на индексирани колони. Може да не засегне тази конкретна заявка, но предпоставката е, че е лесно да се използва индексът за намиране на MIN или MAX но не и двата едновременно, защото всеки индекс може да не се използва ефективно.
Ето малко четиво за това:
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. Как да изтриете ред в oracle

  2. ORACLE SQL select distinct без премахване на дубликати

  3. Как да покажа резултатите от процедура извън него в Oracle

  4. изгледи на Oracle и мрежов трафик

  5. Как да експортирате резултата в различни раздели на Excel в Toad for Data Analyst?