Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

SQL - Điền ngày không có kết quả

Tùy thuộc vào cách bạn muốn tạo chúng, bạn có thể tạo bảng lịch hoặc tạo các hàng động bằng cách sử dụng Oracle connect by cú pháp.

with the_dates as (
  select max(trunc(Create_Dtime)) as max_date
       , min(trunc(Create_Dtime)) as min_date
    from player 
         )
  , generator as (
  select min_date + level as the_date
    from the_dates
 connect by level <= max_date
         )
select g.the_date, count(trunc(p.Create_Dtime))
  from generator g
  left outer join player p
    on g.the_date = trunc(p.Create_Dtime)
 group by g.the_date
 order by g.the_date desc

Nếu bạn đi xuống tùy chọn bảng lịch, nó sẽ gọn gàng hơn một chút:

with the_dates as (
  select max(trunc(Create_Dtime)) as max_date
       , min(trunc(Create_Dtime)) as min_date
    from player 
         )
select c.the_date, count(trunc(p.Create_Dtime))
  from calender c
  join the_dates td
    on c.the_date between td.min_date and td.max_date
  left outer join join player p
    on c.the_date = trunc(p.Create_Dtime)
 group by c.the_date
 order by c.the_date

Hoặc, bạn vừa nhận thấy hạn chế về ngày tháng của mình:

with the_dates as (
  select to_date('07-05-2012','dd-mm-yyyy') + level as the_date
    from dual
 connect by level <= trunc(to_date('07-05-2012','dd-mm-yyyy') - sysdate)
         )
 select td.the_date, count(trunc(p.create_dtime))
   from the_dates td
   left outer join player p
     on td.the_date = trunc(p.create_dtime)
  group by td.the_date
  order by td.the_date

Đối với tất cả những điều này, tôi khuyên bạn nên lập chỉ mục trên trunc(create_dtime) trên player của bạn bảng.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm thế nào để tạo hợp nhất hai tập dữ liệu với câu lệnh SQL được chọn (Oracle DBMS)?

  2. Làm cách nào để đặt LINESIZE và PAGESIZE bằng một biến thay thế?

  3. Oracle có tìm nạp tất cả các hàng trước khi đánh giá rownum không?

  4. Cài đặt phần mềm Oracle Database 12c trên Windows

  5. Tomcat 9 w / Apache DBCP + Spring 5 + Oracle 12c + SqlArrayValue