Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Mendapatkan min() dari kolom count(*)

Saya tidak memiliki stasiun Oracle untuk diuji tetapi Anda seharusnya bisa membungkus agregator di sekitar SELECT Anda sebagai subquery/tabel turunan/tampilan sebaris

Jadi itu akan menjadi (TIDAK DIUJI!!)

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

Berikut beberapa bacaannya:
http://www.devshed.com/c/a/Oracle/Inserting-SubQueries-in-SELECT-Statements-in-Oracle/3/

EDIT: Meskipun biasanya itu buruk ide untuk memilih keduanya MIN dan MAX dalam satu kueri.

EDIT2: Masalah min/maks terkait dengan bagaimana beberapa RDBMS (termasuk Oracle) menangani agregasi pada kolom yang diindeks. Ini mungkin tidak memengaruhi kueri khusus ini, tetapi premisnya adalah mudah menggunakan indeks untuk menemukan MIN atau MAX tetapi tidak keduanya pada saat yang sama karena indeks apa pun tidak dapat digunakan secara efektif.
Inilah bacaannya:
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. Batasan Pemeriksaan Oracle

  2. bagaimana cara mengubah tanggal menjadi angka bulan?

  3. Dari XML ke daftar jalur di Oracle 12c

  4. Oracle:Pencarian teks lengkap dengan kondisi

  5. Cari tahu ruang kosong di tablespace