sql >> Databáze >  >> RDS >> Oracle

sběr ročních agregovaných dat pro pozdější rychlý přístup

Zhmotněný pohled by byl skvělou volbou pro to, co chcete dělat. Tímto způsobem můžete napsat dotaz pro zobrazení jednou a poté nechat data v materializovaném zobrazení aktualizovat tak často, jak budete chtít. Můžete mít úlohu, která obnovuje data jednou za noc, o víkendu nebo v jakékoli frekvenci, kterou si zvolíte.

Po vytvoření materializovaného pohledu můžete také přidat indexy nad materializované zobrazení, které vám pomohou s výkonem dotazů, pokud se tak rozhodnete.

Rychlý příklad, jak vytvořit materializovaný pohled, je uveden níže.

CREATE TABLE sale
(
    product_id     NUMBER,
    sale_date      DATE,
    sale_amount    NUMBER
);

INSERT INTO sale (product_id, sale_date, sale_amount)
     VALUES (124, DATE '2019-02-01', 40.25);

INSERT INTO sale (product_id, sale_date, sale_amount)
     VALUES (124, DATE '2019-02-01', 80.99);

INSERT INTO sale (product_id, sale_date, sale_amount)
     VALUES (124, DATE '2020-02-01', 30.50);

INSERT INTO sale (product_id, sale_date, sale_amount)
     VALUES (124, DATE '2020-02-01', 46.75);

CREATE MATERIALIZED VIEW sales_summary
BUILD IMMEDIATE
REFRESH FORCE ON DEMAND
AS
      SELECT product_id,
             SUM (sale_amount)                 AS annual_sales,
             MAX (sale_amount)                 AS max_price,
             MIN (sale_amount)                 AS min_price,
             EXTRACT (YEAR FROM sale_date)     AS year
        FROM sale
    GROUP BY product_id, EXTRACT (YEAR FROM sale_date);

Výsledek

select * from sales_summary;

   PRODUCT_ID    ANNUAL_SALES    MAX_PRICE    MIN_PRICE    YEAR
_____________ _______________ ____________ ____________ _______
          124          121.24        80.99        40.25    2019
          124           77.25        46.75         30.5    2020



  1. Funkce LN() v Oracle

  2. MYSQL ERROR 2003 (HY000) (113) ve vzdáleném tunelování SSH, ale telnet z tunelu SSH funguje

  3. Jak správně používat transakce a zámky k zajištění integrity databáze?

  4. jak načíst nepřetržitý počet výskytů hodnoty sloupce v SQL?