У меня есть таблица со следующими столбцами: возраст (VARCHAR2), оба пола (NUMBER), мужской (NUMBER), женский (NUMBER). Я пытаюсь написать оператор CTAS, используя хранимую функцию, которая будет возвращать процент (num1 / num2). Для жизни я не могу понять это. по сути, я хочу, чтобы CTAS дал мне вторую таблицу с возрастом (VARCHAR2) и процентами (числом), при этом каждая запись из возраста таблицы 1 будет скопирована с соответствующим расчетом для процента.
Это то, что я имею до сих пор.
Вот моя функция.
CREATE OR REPLACE FUNCTION CALCULATE_PERCENT(NUM1 IN NUMBER,NUM2 IN NUMBER)
RETURN NUMBER
IS TOTAL NUMBER;
BEGIN
SELECT (NUM1/NUM2) INTO TOTAL FROM DUAL;
RETURN TOTAL;
END;
Вот мой CTAS.
CREATE TABLE ARMalePercentage (AGE PRIMARY KEY)
AS SELECT A.AGE, calculate_percent(num1=>A.MALE,num2=>A.BOTHSEXES)
"Percent Male Population" from arkansas2010census a;
Я новичок в SQL и понятия не имею, что я делаю неправильно, поэтому любая помощь приветствуется.
Решение:
CREATE TABLE ARMalePercentage (AGE PRIMARY KEY, "Percent Male Population") AS SELECT A.AGE, (select calculate_percent(a.MALE,a.BOTH_SEXES) from dual) "Percent Male Population" FROM arkansas2010census a;