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

Menggunakan fungsi agregasi untuk memfilter catatan berdasarkan cap waktu MIN

Ada beberapa cara untuk mendapatkan catatan paling awal dan menghindari keharusan mengetik kriteria yang sama dua kali.

Menggunakan FETCH FIRST ROWS (tersedia pada Oracle 12c)

select * 
from abc_customer_details cd
join abc_customers c on c.id = cd.customer_id
where cd.country_code = 'KE'
order by creation_timestamp
fetch first row only;

Menggunakan CTE (klausa DENGAN klausa)

with cte as
(
  select * 
  from abc_customer_details cd
  join abc_customers c on c.id = cd.customer_id
  where cd.country_code = 'KE'
)
select *
from cte
where (creation_timestamp) = (select min(creation_timestamp) from cte);

Menggunakan fungsi jendela

select *
from
(
  select cd.*, c.*, min(creation_timestamp) over () as min_creation_timestamp
  from abc_customer_details cd
  join abc_customers c on c.id = cd.customer_id
  where cd.country_code = 'KE'
)
where creation_timestamp = min_creation_timestamp;

(Omong-omong, saya mengubah kriteria bergabung di semua kueri ini. Tampaknya sangat tidak mungkin Anda ingin bergabung di abc_customer_details.id = abc_customers.customer_id .)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara menggunakan oracle di cakePHP

  2. Hindari pemangkasan CHAR saat menggunakan Eclipselink

  3. bantuan oracle hilang koma

  4. GALAT:ORA-00917:koma hilang saat menggunakan Hibernate dengan urutan yang ada di Oracle

  5. Bagaimana Anda memindahkan tabel yang dipartisi dari satu tablespace ke tablespace lain di Oracle 11g?