1-.Tengo un array en una tabla y quiero hacer un AVG de sus valores:
¿cómo se une un array (implode) pero en el propio sql?
SELECT AVG(IMPLODE(',',campo_array)) FROM ....
¿cómo demonios era? recuerdo que se podía hacer, sino alguna otra idea?
2-. ¿Cómo actualizo un objeto en postgresql?
Tabla
-curso: contiene el objeto tutor, el cual tiene el atributo horas_lectivas.
UPDATE curso SET tutor.horas_lectivas=tutor.horas_lectivas+2;
Me marca que intenta usar tutor como si fuera una tabla, y claro está, no es así.
:http://dev.mysql.com/doc/refman/5.5/en/group-by-functions.html#function_group-concat ?
Cita de: Shell Root en 18 Marzo 2013, 20:33 PM
:http://dev.mysql.com/doc/refman/5.5/en/group-by-functions.html#function_group-concat ?
Erré al indicar mySQL, la duda también va dirigida a postgresql.
He probado cosas como:
-array_to_string
-string_agg
-array_append
-array_agg
parece que nada cuela al ser un array que es atributo de un objeto y no una columna.
Para el caso 1 ¿es necesario tener estos datos en un array? ¿por qué no en columnas separadas? En todo caso podrías resolverlo creando una función:
create or replace function promedio_array(numeros int[])
returns numeric as $$
declare
promedio numeric;
suma int;
numero int;
begin
suma = 0;
foreach numero in array numeros
loop
suma = suma + numero;
end loop;
promedio = suma::numeric / array_length(numeros,1);
return promedio;
end;
$$ LANGUAGE plpgsql;
Y luego haciendo la consulta:
select avg(promedio_array(numero)) from tabla;
Para el caso 2, no estoy seguro de a qué te refieres, pero creo que lo que quieres hacer es:
UPDATE curso.tutor SET horas_lectivas=horas_lectivas+2;