我正在尝试在现有表中创建一个新列,并使用 select 语句进行除法以创建要插入到新列中的数据。我写出的几个语句将作为单独的查询工作,但我无法将这些语句串在一起成为一个查询。
我仍在学习 SQL 并将其与 mySQL 和 PostgreSQL 一起使用。上个月我参加了 SQL 的课程,现在我正在尝试做自己的项目以保持我的技能敏锐。
我正在对 2012 年明尼苏达州的选举结果进行一些工作,以在我的表格中使用,以了解我正在使用的数据。
我已经能够更改我的表并添加一个新列,其中包含这些语句自己使用它们。
ALTER TABLE mn2012ct_geom2 ADD COLUMN obama_pct decimal(10,2)
ALTER TABLE mn2012ct_geom2 ADD COLUMN romney_pct decimal(10,2)
我能够使用这个 select 语句在我的终端应用程序中生成我想要的信息。我在这里要做的是根据候选人获得的票数超过已投的总票数创建一个十进制数。
SELECT CAST (obama AS DECIMAL) / CAST (uspres_total AS DECIMAL)
AS obama_pct FROM mn2012ct_geom2
SELECT CAST (romney AS DECIMAL) / CAST (uspres_total AS DECIMAL)
AS obama_pct FROM mn2012ct_geom2
现在,我想将此信息添加到我使用上面的 Alter table 语句创建的新列中,或者如果我在此查询之前创建列,则使用插入语句。
我试过这样的组合查询:
ALTER TABLE mn2012ct_geom2 ADD COLUMN obama_pct decimal(10,2) AS
(SELECT CAST (obama AS DECIMAL (10,2)) / CAST (uspres_total AS DECIMAL (10,2))
AS obama_pct FROM mn2012ct_geom2);
或者使用类似这一行的 Insert 命令而不是 alter table 语句
INSERT INTO mn2012ct_geom2 (romney_pct) AS
(SELECT CAST (romney AS DECIMAL (10,2)) / CAST (uspres_total AS DECIMAL (10,2))
AS romney_pct FROM mn2012ct_geom2);
当我尝试这样做时,它会出现这样的错误:
ERROR: syntax error at or near "AS"
LINE 1: ...mn2012ct_geom2 ADD COLUMN obama_pct decimal(10,2) AS (SELECT...
我认为这种 Alter 表和添加列或插入会起作用,因为当我使用相同的 select 语句创建新表时,这种格式会起作用。
CREATE TABLE obama_pct AS (SELECT CAST (obama AS DECIMAL (10,2)) / CAST (uspres_total
AS DECIMAL (10,2)) AS obama_pct FROM mn2012ct_geom2);
可以为您提供任何帮助,我将不胜感激。我一直在尝试谷歌并在 stackoverflow 上搜索以找到答案,但我发现的所有内容似乎都不完全符合我正在做的事情。