Sampling is a method used in business scenarios to analyze a small portion of a large database in order to get a rough impression of the dataset. This release of PAL provides eight sampling methods, including First_N, Middle_N, Last_N, Every_Nth, SimpleRandom_WithReplacement, SimpleRandom_WithoutReplacement, Systematic, and Stratified.
------

SET SCHEMA DM_PAL;

DROP TABLE PAL_SAMPLING_DATA_TBL;
CREATE COLUMN TABLE PAL_SAMPLING_DATA_TBL (
    "EMPNO" INTEGER,
    "GENDER" VARCHAR (50),
    "INCOME" DOUBLE
);
INSERT INTO PAL_SAMPLING_DATA_TBL VALUES (1, 'male', 4000.5);
INSERT INTO PAL_SAMPLING_DATA_TBL VALUES (2, 'male', 5000.7);
INSERT INTO PAL_SAMPLING_DATA_TBL VALUES (3, 'female', 5100.8);
INSERT INTO PAL_SAMPLING_DATA_TBL VALUES (4, 'male', 5400.9);
INSERT INTO PAL_SAMPLING_DATA_TBL VALUES (5, 'female', 5500.2);
INSERT INTO PAL_SAMPLING_DATA_TBL VALUES (6, 'male', 5540.4);
INSERT INTO PAL_SAMPLING_DATA_TBL VALUES (7, 'male', 4500.9);
INSERT INTO PAL_SAMPLING_DATA_TBL VALUES (8, 'female', 6000.8);
INSERT INTO PAL_SAMPLING_DATA_TBL VALUES (9, 'male', 7120.8);
INSERT INTO PAL_SAMPLING_DATA_TBL VALUES (10, 'female', 8120.9);
INSERT INTO PAL_SAMPLING_DATA_TBL VALUES (11, 'female', 7453.9);
INSERT INTO PAL_SAMPLING_DATA_TBL VALUES (12, 'male', 7643.8);
INSERT INTO PAL_SAMPLING_DATA_TBL VALUES (13, 'male', 6754.3);
INSERT INTO PAL_SAMPLING_DATA_TBL VALUES (14, 'male', 6759.9);
INSERT INTO PAL_SAMPLING_DATA_TBL VALUES (15, 'male', 9876.5);
INSERT INTO PAL_SAMPLING_DATA_TBL VALUES (16, 'female', 9873.2);
INSERT INTO PAL_SAMPLING_DATA_TBL VALUES (17, 'male', 9889.9);
INSERT INTO PAL_SAMPLING_DATA_TBL VALUES (18, 'male', 9910.4);
INSERT INTO PAL_SAMPLING_DATA_TBL VALUES (19, 'male', 7809.3);
INSERT INTO PAL_SAMPLING_DATA_TBL VALUES (20, 'female', 8705.7);
INSERT INTO PAL_SAMPLING_DATA_TBL VALUES (21, 'male', 8756.0);
INSERT INTO PAL_SAMPLING_DATA_TBL VALUES (22, 'female', 7843.2);
INSERT INTO PAL_SAMPLING_DATA_TBL VALUES (23, 'male', 8576.9);
INSERT INTO PAL_SAMPLING_DATA_TBL VALUES (24, 'male', 9560.9);
INSERT INTO PAL_SAMPLING_DATA_TBL VALUES (25, 'female', 8794.9);

DROP TABLE #PAL_PARAMETER_TBL;
CREATE LOCAL TEMPORARY COLUMN TABLE #PAL_PARAMETER_TBL (
    "PARAM_NAME" VARCHAR (256),
    "INT_VALUE" INTEGER,
    "DOUBLE_VALUE" DOUBLE,
    "STRING_VALUE" VARCHAR (1000)
);
INSERT INTO #PAL_PARAMETER_TBL VALUES ('SAMPLING_METHOD', 0, NULL, NULL);
INSERT INTO #PAL_PARAMETER_TBL VALUES ('SAMPLING_SIZE', 8, NULL, NULL);
INSERT INTO #PAL_PARAMETER_TBL VALUES ('INTERVAL', 5, NULL, NULL);
INSERT INTO #PAL_PARAMETER_TBL VALUES ('COLUMN_CHOOSE', 2, NULL, NULL);

CALL "_SYS_AFL"."PAL_SAMPLING"(PAL_SAMPLING_DATA_TBL, #PAL_PARAMETER_TBL, ?);


TRUNCATE TABLE #PAL_PARAMETER_TBL;
INSERT INTO #PAL_PARAMETER_TBL VALUES ('SAMPLING_METHOD', 1, NULL, NULL);
INSERT INTO #PAL_PARAMETER_TBL VALUES ('SAMPLING_SIZE', 8, NULL, NULL);
INSERT INTO #PAL_PARAMETER_TBL VALUES ('INTERVAL', 5, NULL, NULL);
INSERT INTO #PAL_PARAMETER_TBL VALUES ('COLUMN_CHOOSE', 2, NULL, NULL);
CALL "_SYS_AFL"."PAL_SAMPLING"(PAL_SAMPLING_DATA_TBL, #PAL_PARAMETER_TBL, ?);

TRUNCATE TABLE #PAL_PARAMETER_TBL;
INSERT INTO #PAL_PARAMETER_TBL VALUES ('SAMPLING_METHOD', 2, NULL, NULL);
INSERT INTO #PAL_PARAMETER_TBL VALUES ('SAMPLING_SIZE', 8, NULL, NULL);
INSERT INTO #PAL_PARAMETER_TBL VALUES ('INTERVAL', 5, NULL, NULL);
INSERT INTO #PAL_PARAMETER_TBL VALUES ('COLUMN_CHOOSE', 2, NULL, NULL);
CALL "_SYS_AFL"."PAL_SAMPLING"(PAL_SAMPLING_DATA_TBL, #PAL_PARAMETER_TBL, ?);

TRUNCATE TABLE #PAL_PARAMETER_TBL;
INSERT INTO #PAL_PARAMETER_TBL VALUES ('SAMPLING_METHOD', 3, NULL, NULL);
INSERT INTO #PAL_PARAMETER_TBL VALUES ('SAMPLING_SIZE', 8, NULL, NULL);
INSERT INTO #PAL_PARAMETER_TBL VALUES ('INTERVAL', 5, NULL, NULL);
INSERT INTO #PAL_PARAMETER_TBL VALUES ('COLUMN_CHOOSE', 2, NULL, NULL);
CALL "_SYS_AFL"."PAL_SAMPLING"(PAL_SAMPLING_DATA_TBL, #PAL_PARAMETER_TBL, ?);

TRUNCATE TABLE #PAL_PARAMETER_TBL;
INSERT INTO #PAL_PARAMETER_TBL VALUES ('SAMPLING_METHOD', 4, NULL, NULL);
INSERT INTO #PAL_PARAMETER_TBL VALUES ('SAMPLING_SIZE', 8, NULL, NULL);
INSERT INTO #PAL_PARAMETER_TBL VALUES ('INTERVAL', 5, NULL, NULL);
INSERT INTO #PAL_PARAMETER_TBL VALUES ('COLUMN_CHOOSE', 2, NULL, NULL);
INSERT INTO #PAL_PARAMETER_TBL VALUES ('RANDOM_SEED', 10, NULL, NULL);
CALL "_SYS_AFL"."PAL_SAMPLING"(PAL_SAMPLING_DATA_TBL, #PAL_PARAMETER_TBL, ?);

TRUNCATE TABLE #PAL_PARAMETER_TBL;
INSERT INTO #PAL_PARAMETER_TBL VALUES ('SAMPLING_METHOD', 5, NULL, NULL);
INSERT INTO #PAL_PARAMETER_TBL VALUES ('SAMPLING_SIZE', 8, NULL, NULL);
INSERT INTO #PAL_PARAMETER_TBL VALUES ('INTERVAL', 5, NULL, NULL);
INSERT INTO #PAL_PARAMETER_TBL VALUES ('COLUMN_CHOOSE', 2, NULL, NULL);
INSERT INTO #PAL_PARAMETER_TBL VALUES ('RANDOM_SEED', 10, NULL, NULL);
CALL "_SYS_AFL"."PAL_SAMPLING"(PAL_SAMPLING_DATA_TBL, #PAL_PARAMETER_TBL, ?);

TRUNCATE TABLE #PAL_PARAMETER_TBL;
INSERT INTO #PAL_PARAMETER_TBL VALUES ('SAMPLING_METHOD', 6, NULL, NULL);
INSERT INTO #PAL_PARAMETER_TBL VALUES ('SAMPLING_SIZE', 8, NULL, NULL);
INSERT INTO #PAL_PARAMETER_TBL VALUES ('INTERVAL', 5, NULL, NULL);
INSERT INTO #PAL_PARAMETER_TBL VALUES ('COLUMN_CHOOSE', 2, NULL, NULL);
INSERT INTO #PAL_PARAMETER_TBL VALUES ('RANDOM_SEED', 10, NULL, NULL);
CALL "_SYS_AFL"."PAL_SAMPLING"(PAL_SAMPLING_DATA_TBL, #PAL_PARAMETER_TBL, ?);

TRUNCATE TABLE #PAL_PARAMETER_TBL;
INSERT INTO #PAL_PARAMETER_TBL VALUES ('SAMPLING_METHOD', 7, NULL, NULL);
INSERT INTO #PAL_PARAMETER_TBL VALUES ('SAMPLING_SIZE', 8, NULL, NULL);
INSERT INTO #PAL_PARAMETER_TBL VALUES ('INTERVAL', 5, NULL, NULL);
INSERT INTO #PAL_PARAMETER_TBL VALUES ('COLUMN_CHOOSE', 2, NULL, NULL);
INSERT INTO #PAL_PARAMETER_TBL VALUES ('RANDOM_SEED', 0, NULL, NULL);
CALL "_SYS_AFL"."PAL_SAMPLING"(PAL_SAMPLING_DATA_TBL, #PAL_PARAMETER_TBL, ?);

TRUNCATE TABLE #PAL_PARAMETER_TBL;
INSERT INTO #PAL_PARAMETER_TBL VALUES ('SAMPLING_METHOD', 0, NULL, NULL);
INSERT INTO #PAL_PARAMETER_TBL VALUES ('PERCENTAGE', NULL, 0.1, NULL);
CALL "_SYS_AFL"."PAL_SAMPLING"(PAL_SAMPLING_DATA_TBL, #PAL_PARAMETER_TBL, ?);
