我試圖在現有表中創建一個新列,並使用select語句進行劃分以創建我想要插入到新列中的數據。我寫出的幾個陳述將作爲單獨的查詢工作,但我無法將這些陳述串成一個查詢。將列添加到表中並立即將數據添加到PostgreSQL中的列中
我仍在學習SQL,並將它與mySQL和PostgreSQL結合使用。我上個月在SQL上學了一門課,現在我正在嘗試自己的項目來保持我的技能。
我正在與MN的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 TABLE語句像我有高於或與INSERT語句,如果我創建這個查詢之前,該列的新列。
我曾嘗試合併查詢是這樣的:
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...
我以爲那種改變表和添加列或插入將工作,因爲該類型的格式工作時,我使用相同的選擇語句創建一個新的表。
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找到答案,但我沒有發現什麼似乎完全符合我所做的似乎。
謝謝你的建議,並幫助我學習。將仔細看看視圖並瞭解它們的工作原理。 –