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

Bagaimana cara mengelompokkan berdasarkan bulan termasuk semua bulan?

Oracle memiliki serangkaian fungsi manipulasi tanggal yang baik . Dua yang relevan untuk masalah ini adalah

  • MONTHS_BETWEEN() yang menghitung jumlah bulan antara dua tanggal
  • ADD_MONTHS() yang menambah tanggal dengan jumlah bulan tertentu

Kami dapat menggabungkan fungsi-fungsi ini untuk menghasilkan tabel dari semua bulan yang direntang oleh catatan tabel Anda. Kemudian kami menggunakan gabungan luar untuk menggabungkan catatan dari USER_INFO ke kalender itu secara kondisional. Ketika tidak ada catatan yang cocok dengan count(id) akan menjadi nol.

with cte as (
  select max(trunc(created, 'MM')) as max_dt
         , min(trunc(created, 'MM')) as min_dt
  from user_info
  )
 , cal as (
    select add_months(min_dt, (level-1)) as mth
    from cte
    connect by level <= months_between(max_dt, min_dt) + 1
)
select to_char(cal.mth, 'YYYY-MM') as operation
       , count(id)
from  cal
     left outer join user_info
   on trunc(user_info.created, 'mm') = cal.mth
group by rollup (cal.mth)
order by 1
/



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. pdo_oci_handle_factory:Kesalahan saat mencoba mengambil teks untuk kesalahan ORA-01804

  2. JCombobox tidak ditampilkan

  3. SQL yang baru saja dieksekusi bukan di V$SQL

  4. cara terhubung ke database oracle dari unix

  5. sql (Oracle) menghitung jumlah interval yang tumpang tindih