将 table 与一个分区中的一个值和另一个分区中的其余值进行分区

Partitioning a table with one value in one partition and the rest in another partition

例如,我有一个 table 名称 Emp,它有 empname、designation、salary 作为列。我希望这个 table 有 2 个分区,例如在一个分区中作为经理的员工列表,在一个分区中休息(工程师、员工、文员)。

有人可以帮助创建它吗

请参考以下URL和示例: 例如,以下 SQL 语句将 partitioned by range table sales splits 的 sales_Q4_2007 分区拆分为对应于下一年的季度的五个分区。在此示例中,分区 sales_Q4_2008 隐式成为拆分分区的上限。

ALTER TABLE sales SPLIT PARTITION sales_Q4_2007 INTO
( PARTITION sales_Q4_2007 VALUES LESS THAN (TO_DATE('01-JAN-2008','dd-MON-yyyy')),
  PARTITION sales_Q1_2008 VALUES LESS THAN (TO_DATE('01-APR-2008','dd-MON-yyyy')),
  PARTITION sales_Q2_2008 VALUES LESS THAN (TO_DATE('01-JUL-2008','dd-MON-yyyy')),
  PARTITION sales_Q3_2008 VALUES LESS THAN (TO_DATE('01-OCT-2008','dd-MON-yyyy')),
  PARTITION sales_Q4_2008);

对于按列表分区的示例 table 客户,以下语句将分区 Europe 拆分为三个分区。

ALTER TABLE list_customers SPLIT PARTITION Europe INTO
  (PARTITION western-europe VALUES ('GERMANY', 'FRANCE'),
   PARTITION southern-europe VALUES ('ITALY'), 
   PARTITION rest-europe);

https://docs.oracle.com/database/121/VLDBG/GUID-01C14320-0D7B-48BE-A5AD-003DDA761277.htm

你会对此有所了解。

在这种情况下,您将不得不使用基于 LIST 的分区。创建一个 pertition where ROLE = MANAGER 并创建另一个默认分区。这是一个可以帮助你的例子。

例子

CREATE TABLE EMPLOYEE (EMP_ID VARCHAR2(25), 
                       EMP_NAME VARCHAR2(250),
                       ROLE VARCHAR2(100)
                       )
     PARTITION BY LIST (ROLE) 
     (
     PARTITION part_managers
        VALUES ('MANAGER'),

     PARTITION part_others
        VALUES (DEFAULT)
     );