2016-10-14 2 views
0

J'ai une table PostgreSQL de 7k enregistrements. chaque enregistrement a 3 un identifiant unique et 3 champs avec lui. enfants, écoles, hôpitaux. il y a tous les champs entiers. Je veux ajouter une nouvelle colonne et calculer le nombre total de récepteurs (écoles, classes d'enfants, hôpitaux) pour chaque rangée. Je pensais que ce devrait être assez straighforward avec l'ajout d'une colonne et faire un insert avec une sélection, mais je ne reçois pas les résultats que je veuxAjout de colonnes SQL ensemble

alter table site add total integer; 

insert into site(total) select sum(schools+childcares+hospitals) as s from site; 

j'ai aussi essayé un groupe par id dans l'insert instruction select

Répondre

1

Vous cherchez Update pas Insert

Update site 
set total = COALESCE(schools,0)+COALESCE(childcares,0)+COALESCE(hospitals,0) 

Ajouté COALESCE à manipuler NULL valeurs.

Ex:

1 + 2 + NULL = NULL pour ainsi remplacer NULL avec 0 Je l'ai utilisé COALESCE.

Maintenant, il sera 1 + 2 + 0(NULL) = 3

+0

qu'est-ce que Coalesce faire? – ziggy

+0

@ziggy - 'Coalesce' renverra la première valeur' Not Null' de la liste. Je remplace la valeur 'NULL' par' zéro'. –

+0

ahh gotcha super qui a fonctionné! – ziggy