Create the SALES_BY_REGION table
CREATE TABLE sales_by_region (
product_id NUMBER(6),
quantity_sold INTEGER,
sale_date DATE,
store_name VARCHAR(30),
state_code VARCHAR(2)
)
PARTITION BY LIST (state_code)
(
PARTITION region_east
VALUES ('CT','MA','MD','ME','NH','NJ','NY','PA','VA'),
PARTITION region_west
VALUES ('AZ','CA','CO','NM','NV','OR','UT','WA'),
PARTITION region_south
VALUES ('AL','AR','GA','KY','LA','MS','TN','TX'),
PARTITION region_central
VALUES ('IA','IL','MO','MI','ND','OH','SD')
)
Table created.
SELECT TABLE_NAME,PARTITION_NAME, PARTITION_POSITION, HIGH_VALUE FROM USER_TAB_PARTITIONS WHERE TABLE_NAME ='SALES_BY_REGION'
TABLE_NAME | PARTITION_NAME | PARTITION_POSITION | HIGH_VALUE |
---|---|---|---|
SALES_BY_REGION | REGION_EAST | 1 | 'CT', 'MA', 'MD', 'ME', 'NH', 'NJ', 'NY', 'PA', 'VA' |
SALES_BY_REGION | REGION_WEST | 2 | 'AZ', 'CA', 'CO', 'NM', 'NV', 'OR', 'UT', 'WA' |
SALES_BY_REGION | REGION_SOUTH | 3 | 'AL', 'AR', 'GA', 'KY', 'LA', 'MS', 'TN', 'TX' |
SALES_BY_REGION | REGION_CENTRAL | 4 | 'IA', 'IL', 'MO', 'MI', 'ND', 'OH', 'SD' |
ALTER TABLE sales_by_region
ADD PARTITION region_nonmainland VALUES ('HI','PR')
Table altered.
ALTER TABLE sales_by_region
ADD PARTITION region_null VALUES (NULL)
Table altered.
ALTER TABLE sales_by_region
ADD PARTITION VALUES (DEFAULT)
Table altered.
SELECT TABLE_NAME,PARTITION_NAME, PARTITION_POSITION, HIGH_VALUE FROM USER_TAB_PARTITIONS WHERE TABLE_NAME ='SALES_BY_REGION'
TABLE_NAME | PARTITION_NAME | PARTITION_POSITION | HIGH_VALUE |
---|---|---|---|
SALES_BY_REGION | REGION_EAST | 1 | 'CT', 'MA', 'MD', 'ME', 'NH', 'NJ', 'NY', 'PA', 'VA' |
SALES_BY_REGION | REGION_WEST | 2 | 'AZ', 'CA', 'CO', 'NM', 'NV', 'OR', 'UT', 'WA' |
SALES_BY_REGION | REGION_SOUTH | 3 | 'AL', 'AR', 'GA', 'KY', 'LA', 'MS', 'TN', 'TX' |
SALES_BY_REGION | REGION_CENTRAL | 4 | 'IA', 'IL', 'MO', 'MI', 'ND', 'OH', 'SD' |
SALES_BY_REGION | REGION_NONMAINLAND | 5 | 'HI', 'PR' |
SALES_BY_REGION | REGION_NULL | 6 | NULL |
SALES_BY_REGION | SYS_P442 | 7 | DEFAULT |
ALTER TABLE sales_by_region
MODIFY PARTITION region_central
ADD VALUES ('OK','KS')
Table altered.
SELECT TABLE_NAME,PARTITION_NAME, PARTITION_POSITION, HIGH_VALUE FROM USER_TAB_PARTITIONS WHERE TABLE_NAME ='SALES_BY_REGION'
TABLE_NAME | PARTITION_NAME | PARTITION_POSITION | HIGH_VALUE |
---|---|---|---|
SALES_BY_REGION | REGION_EAST | 1 | 'CT', 'MA', 'MD', 'ME', 'NH', 'NJ', 'NY', 'PA', 'VA' |
SALES_BY_REGION | REGION_WEST | 2 | 'AZ', 'CA', 'CO', 'NM', 'NV', 'OR', 'UT', 'WA' |
SALES_BY_REGION | REGION_SOUTH | 3 | 'AL', 'AR', 'GA', 'KY', 'LA', 'MS', 'TN', 'TX' |
SALES_BY_REGION | REGION_CENTRAL | 4 | 'IA', 'IL', 'MO', 'MI', 'ND', 'OH', 'SD', 'OK', 'KS' |
SALES_BY_REGION | REGION_NONMAINLAND | 5 | 'HI', 'PR' |
SALES_BY_REGION | REGION_NULL | 6 | NULL |
SALES_BY_REGION | SYS_P442 | 7 | DEFAULT |
INSERT INTO sales_by_region VALUES (1001,100,'25-AUG-2014','My Store MA','MA')
1 row(s) inserted.
INSERT INTO sales_by_region VALUES (1002,200,'26-AUG-2014','My Store OK','OK')
1 row(s) inserted.
SELECT * FROM sales_by_region
PRODUCT_ID | QUANTITY_SOLD | SALE_DATE | STORE_NAME | STATE_CODE |
---|---|---|---|---|
1001 | 100 | 25-AUG-14 | My Store MA | MA |
1002 | 200 | 26-AUG-14 | My Store OK | OK |
SELECT * FROM sales_by_region PARTITION(region_east)
PRODUCT_ID | QUANTITY_SOLD | SALE_DATE | STORE_NAME | STATE_CODE |
---|---|---|---|---|
1001 | 100 | 25-AUG-14 | My Store MA | MA |