我正在尝试在现有表格中创建一个新的列,并使用选择语句执行除法来创建我要插入新列的数据。我写出了几个语句作为单独的查询可以工作,但我还没有能够将这些语句串联成一个单一的查询。
我仍在学习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 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表语句或者如果我在此查询之前创建了该列,则可以使用插入语句。我尝试过这样的组合查询: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 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 table”、“add column”或“insert”会起作用,因为使用相同的选择语句创建新表格时,那种格式有效。
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上搜索来寻找答案,但似乎没有找到完全适合我正在做的事情的答案。