2011-11-18 8 views

risposta

14

Sì. Ma i valori sono memorizzati come testo, quindi devi prima convertirli in un tipo di dati appropriato. Quindi, per sommare le altezze in pollici, che sono archiviati in un hstore nella colonna "altro"

CREATE TABLE my_table (
    id integer primary key, 
    other hstore 
); 
insert into my_table values 
(1, hstore('height_in', '72') || hstore('weight_lbs', '180')), 
(2, hstore('height_in', '65') || hstore('girth_in', '42')); 

select sum((other->'height_in')::integer) sum_of_height 
from my_table; 

sum_of_height 
-- 
137 
+0

Cosa succede se una riga contiene un valore che non può essere convertito in numero intero? Dare ERRORE: sintassi di input non valida per intero: 'quindi come ottenere il risultato desiderato saltando quella riga? – RockStar

+0

@RockStar: utilizza una clausola WHERE e un'espressione regolare: 'dove (altro -> 'height_in') ~ '^ \ d + $''. Tuttavia, la necessità di fare ciò indica un errore nel codice dell'applicazione. Correggilo. –

Problemi correlati