我有一个带有以下列的表:age(VARCHAR2),bothsexs(NUMBER),male(NUMBER),female(NUMBER)。我正在尝试使用存储函数编写CTAS语句,该函数将返回百分比(num1 / num2)。对于我的一生,我无法弄清楚。本质上,我希望CTAS给我第二张表,其中包含age(VARCHAR2)和percent(number),并复制表1 age中的每条记录,并对百分比进行适当的计算。
到目前为止,这就是我所拥有的。
这是我的功能。
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;
您正在创建一个表ARMalePercentage
,该表具有一个名为的列,AGE
该列具有主键约束,并尝试使用返回两列A.AGE
以及函数结果的查询来填充该表。
我想你要
CREATE TABLE ARMalePercentage (AGE PRIMARY KEY, PCT_MALE)
AS SELECT A.AGE,
calculate_percent(num1=>A.MALE,num2=>A.BOTHSEXES) "Percent Male Population"
from arkansas2010census a;
您可以尝试运行SELECT
语句的一部分,以查看是否返回了两列。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句