Hola a todos, En primer lugar, quisiera presentarme, mi nombre en Jorge Tornero y trabajo en un centro de investigación pesquera y pretendo hacer uso de Postgresql para mi trabajo, lo que ocurre es que (como siempre) uno se encuentra con algunos escollos que intenta salvar, hasta que se le hace inevitable preguntar...
Mi problema se centra en crear una función que me haga más sencillo obtener los coeficientes de regresión para un conjunto de datos. En mi caso, los datos de partida se podrían resumir como una columna con datos enteros de talla y otra de numeric de peso (aparte de otras consultas como fecha de muestreo, etc). Con esos campos y sus correspondientes datos, hago una consulta como: select exp(regr_intercept(ln(peso),ln(talla/10.0))),regr_slope(ln(peso),ln(talla/10.0)),regr_r2(ln(peso),ln(talla/10.0)) from biologicos where talla>0 and peso>0 and espcod='10156' and fecha between '2009/04/01' and '2009/6/30'; Lo que me devuelve una "tablita" con los resultados que yo quiero, por ejemplo: exp | regr_slope | regr_r2 ---------------------+------------------+------------------ 0.00347024881569587 | 3.27125159141054 | 0.97753903864483 (1 fila) Ahora bien, lo que quiero es crear una función, por ejemplo: regresion(parametro1,parametro2) que me ahorre el exp(regr_intercept(ln(peso),ln(talla/10.0))),regr_slope(ln(peso),ln(talla/10.0)),regr_r2(ln(peso),ln(talla/10.0)) cada vez que hago una consulta y de esta manera las consultas de este tipo fueran: select regresion(talla,peso) from biologicos where.......; para ello, tirando de manuales, he hecho algo así: DROP FUNCTION IF EXISTS regresion(int,numeric); CREATE FUNCTION regresion(int,numeric) RETURNS TABLE(A double, B double, R2 double) AS $$select exp(regr_intercept(ln($2),ln($1/10.0))),regr_slope(ln($2),ln($1/10.0)),regr_r2(ln($2),ln($1/10.0))$$ LANGUAGE SQL; Que naturalmente me dice 'tararí que te vi'. Alguien tiene alguna sugerencia de cómo proceder? Sería bastante trivial hacer algo en python por ejemplo, pero la cosa es que la función quede en el servidor. Un saludo y gracias -- ----------------------------------------- Jorge Tornero Núñez Centro Oceanográfico de Cádiz Instituto Español de Oceanografía Puerto Pesquero - Muelle de Levante, s/n 11006 Cádiz - España Tel. +34 956294189 Fax. +34 956294232 www.ieo.es