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

Dự báo dữ liệu chuỗi thời gian trong Oracle / SQL

Bạn có thể tạo một dự báo đơn giản bằng cách sử dụng REGR các hàm hồi quy tuyến tính.

--Ordinary least squares forecast for each customer for the next year.
select
    cust_id,
    max(year) +1 forecast_year,
    -- y = mx+b
    regr_slope(revenue, year)
        * (max(year) + 1)
        + regr_intercept(revenue, year) forecasted_revenue
from customer_data
group by cust_id;

CUST_ID   FORECAST_YEAR   FORECASTED_REVENUE
-------   -------------   ------------------
1                  2018               730868
2                  2018                50148
4                  2018                 7483
3                  2018                -9920

Dưới đây là lược đồ mẫu. Hoặc bạn có thể sử dụng SQLFiddle này .

create table customer_data
(
    cust_id number,
    year number,
    revenue number
);

insert into customer_data
select 1, 2016, 679862 from dual union all
select 1, 2017, 705365 from dual union all
select 2, 2016, 51074  from dual union all
select 2, 2017, 50611  from dual union all
select 3, 2016, 190706 from dual union all
select 3, 2017, 90393  from dual union all
select 4, 2016, 31649  from dual union all
select 4, 2017, 19566  from dual;

REGR hàm giải quyết các cặp số, nó không hiểu các quy tắc kinh doanh như "doanh thu không được dưới 0". Nếu bạn muốn giới hạn dự báo luôn ở mức bằng hoặc trên 0, hãy CASE biểu thức có thể giúp:

--Forecasted revenue, with minimum forecast of 0.
select cust_id, forecast_year,
    case when forecasted_revenue < 0 then 0 else forecasted_revenue end forecasted_revenue
from
(
    --Ordinary least squares forecast for each customer for the next year.
    select
        cust_id,
        max(year) +1 forecast_year,
        -- y = mx+b
        regr_slope(revenue, year)
            * (max(year) + 1)
            + regr_intercept(revenue, year) forecasted_revenue
    from customer_data
    group by cust_id
);

CUST_ID   FORECAST_YEAR   FORECASTED_REVENUE
-------   -------------   ------------------
1                  2018               730868
2                  2018                50148
4                  2018                 7483
3                  2018                    0



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cập nhật kết quả của một câu lệnh SELECT

  2. SQL kết nối cho nhiều hàng

  3. Nhập một lược đồ vào một lược đồ mới khác - Oracle

  4. Thay thế REGEXP_SUBSTR trong SQL Server

  5. Làm cách nào để bạn thiết lập một máy chủ được liên kết với cơ sở dữ liệu Oracle trên SQL 2000/2005?