2011-11-18 18 views

Respuesta

14

Sí. Pero los valores se almacenan como texto, por lo que primero debe convertirlos a un tipo de datos apropiado. Por lo tanto, para sumar alturas en pulgadas, que se almacenan en un hstore en la columna "otro"

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

¿Qué sucede si una fila contiene valores que no se pueden convertir en números enteros? Le dará 'ERROR: sintaxis de entrada inválida para entero:' entonces ¿cómo obtener el resultado deseado salteando esa fila? – RockStar

+0

@RockStar: use una cláusula WHERE y una expresión regular: 'donde (other -> 'height_in') ~ '^ \ d + $''. Sin embargo, la necesidad de hacer esto apunta a un error en el código de su aplicación. Arregla eso. –

Cuestiones relacionadas