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

Oracle Partition by ID a subpartition by DATE s intervalem

Můžete vytvořit RANGE INTERVAL oddíl podle data a poté LIST nebo RANGE pododdíl na něm. Bylo by to takto:

CREATE TABLE MY_PART_TABLE
(
  CUSTOMER_ID                      NUMBER             NOT NULL,
  THE_DATE                 TIMESTAMP(0) NOT NULL,
  OTHER_COLUMNS NUMBER
)
PARTITION BY RANGE (THE_DATE) INTERVAL (INTERVAL '1' MONTH)
    SUBPARTITION BY RANGE (CUSTOMER_ID)
        SUBPARTITION TEMPLATE (
        SUBPARTITION CUSTOMER_GROUP_1 VALUES LESS THAN (10),
        SUBPARTITION CUSTOMER_GROUP_2 VALUES LESS THAN (20),
        SUBPARTITION CUSTOMER_GROUP_3 VALUES LESS THAN (30),
        SUBPARTITION CUSTOMER_GROUP_4 VALUES LESS THAN (40),
        SUBPARTITION CUSTOMER_GROUP_5 VALUES LESS THAN (MAXVALUE)
        )
(PARTITION VALUES LESS THAN ( TIMESTAMP '2015-01-01 00:00:00') );



CREATE TABLE MY_PART_TABLE
(
  CUSTOMER_ID                      NUMBER             NOT NULL,
  THE_DATE                 TIMESTAMP(0) NOT NULL,
  OTHER_COLUMNS NUMBER
)
PARTITION BY RANGE (THE_DATE) INTERVAL (INTERVAL '1' MONTH)
    SUBPARTITION BY LIST (CUSTOMER_ID)
        SUBPARTITION TEMPLATE (
        SUBPARTITION CUSTOMER_1 VALUES (1),
        SUBPARTITION CUSTOMER_2 VALUES (2),
        SUBPARTITION CUSTOMER_3_to_6 VALUES (3,4,5,6),
        SUBPARTITION CUSTOMER_7 VALUES (7)
        )
(PARTITION VALUES LESS THAN ( TIMESTAMP '2015-01-01 00:00:00') );

Všimněte si, že pro druhé řešení je číslo (tj. ID) zákazníka pevné. Pokud získáte nové zákazníky, musíte upravit tabulku a odpovídajícím způsobem upravit ŠABLONU PODODDĚLENÍ.

Měsíční oddíly budou automaticky vytvořeny společností Oracle, kdykoli budou vloženy nebo aktualizovány nové hodnoty.




  1. Chyba MySQL 1153 – Mám paket větší než bajtů „max_allowed_packet“

  2. automatizovat dotaz SQL tak, aby se spouštěl každý měsíc

  3. Vytvoření vlastního dotazu pomocí Spring DATA JPA?

  4. Co je ODBC?