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

Lăn số lượng riêng biệt hàng ngày

Điều đầu tiên cần làm là tạo danh sách những ngày bạn thấy thú vị:

select (trunc(sysdate, 'yyyy') -1) + level as ts_day
from dual
connect by level <= to_number( to_char(sysdate, 'DDD' ) )

Điều này sẽ tạo ra một bảng ngày từ 01-JAN năm nay đến ngày hôm nay. Tham gia bảng của bạn với truy vấn phụ này. Sử dụng kết hợp chéo có thể không hiệu quả đặc biệt, tùy thuộc vào lượng dữ liệu bạn có trong phạm vi. Vì vậy, hãy coi đây là bằng chứng về khái niệm và điều chỉnh khi bạn cần.

with days as
 ( select (trunc(sysdate, 'yyyy') -1) + level as ts_day
   from dual
   connect by level <= to_number( to_char(sysdate, 'DDD' ) ) )
select days.ts_day
       , sum ( case when trunc(connect_ts) = ts_day then 1 else 0 end ) as daily_users
       , sum ( case when trunc(connect_ts) between ts_day - 45 and ts_day then 1 else 0 end ) as active_users
from days
     cross join sessions  
where connect_ts between trunc(sysdate, 'yyyy') - 45 and sysdate
group by ts_day
order by ts_day
/


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. tạo tập lệnh SQL

  2. Truy vấn tham số C # cho Oracle - lỗi nghiêm trọng và nguy hiểm!

  3. Tắt và khởi động phiên bản Oracle

  4. làm cách nào để xác định các trình tự trong dự án của tôi (sử dụng chế độ ngủ đông) theo cách mà dự án hoạt động với cả Oracle và Mysql.

  5. Cách tìm nạp tên ràng buộc kiểm tra do hệ thống tạo ra của cột bảng trong oracle