Hinzufügen einer Spalte zur Tabelle und sofortiges Hinzufügen von Daten zur Spalte in PostgreSQL

Ich versuche, eine neue Spalte in einer vorhandenen Tabelle zu erstellen und mithilfe einer select-Anweisung eine Division durchzuführen, um die Daten zu erstellen, die ich in meine neue Spalte einfügen möchte. Einige der Anweisungen, die ich geschrieben habe, funktionieren als separate Abfragen, aber ich konnte die Anweisungen nicht zu einer einzigen Abfrage zusammenfassen.

Ich lerne noch SQL und verwende es mit mySQL und PostgreSQL. Ich habe letzten Monat einen SQL-Kurs besucht und versuche nun, meine eigenen Projekte zu erstellen, um meine Fähigkeiten zu verbessern.

Ich arbeite mit den Wahlergebnissen von 2012 in MN, um sie in meinen Tabellen zu verwenden und um die Daten zu verstehen, mit denen ich arbeite.

Ich konnte meine Tabelle ändern und eine neue Spalte mit diesen Anweisungen hinzufügen, indem ich sie selbst verwendete.

ALTER TABLE mn2012ct_geom2 ADD COLUMN obama_pct decimal(10,2)
ALTER TABLE mn2012ct_geom2 ADD COLUMN romney_pct decimal(10,2)

Ich konnte diese select-Anweisung verwenden, um die gewünschten Informationen in meiner Terminalanwendung zu erzeugen. Ich versuche hier, eine Dezimalzahl aus der Anzahl der Stimmen zu erstellen, die der Kandidat über die Gesamtzahl der abgegebenen Stimmen hinaus erhalten hat.

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

Jetzt möchte ich diese Informationen in die neue Spalte einfügen, die ich entweder mit einer Alter table-Anweisung wie oben oder mit einer insert-Anweisung erstellt habe, wenn ich die Spalte vor dieser Abfrage erstelle.

Ich habe eine kombinierte Abfrage wie folgt versucht:

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);

Oder verwenden Sie einen Einfügebefehl wie diese Zeile anstelle der Anweisung 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);

Wenn ich das versuche, tritt ein Fehler wie dieser auf:

ERROR:  syntax error at or near "AS"
LINE 1: ...mn2012ct_geom2 ADD COLUMN obama_pct decimal(10,2) AS (SELECT...

Ich dachte, diese Art von Tabelle ändern und Spalte hinzufügen oder einfügen würde funktionieren, da diese Art von Format funktionierte, als ich mit derselben select-Anweisung eine neue Tabelle erstellte.

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);   

Jede Hilfe für Sie kann ich sehr schätzen. Ich habe versucht zu googeln und hier nach Stackoverflow zu suchen, um die Antwort zu finden, aber keine der gefundenen Aussagen scheint genau zu der zu passen, die ich tue.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage