Buenas Tardes,
Estoy empezando con las Funciones SQL y no consigo solucionar este error.
ERROR: more than one row returned by a subquery used as an expression
Quiero conseguir la edad media de los médicos que trabajan en la localidad pasada por parámetro. La tabla medico y trabaja están unidas por el atributo código. Entiendo que el error es porque me devuelve más de un valor para código, pero no sé como solucionarlo, ya que necesito los códigos de los diferentes médicos para luego calcular la media de edad.
Código:
CREATE OR REPLACE FUNCTION media_edades_medicos_centrosalud (text) RETURNS numeric AS $$
SELECT avg(edad_medico_cod(codigo)) FROM medico WHERE codigo=(SELECT codigo FROM trabaja WHERE localidad=$1);
$$ LANGUAGE SQL;
SELECT media_edades_medicos_centrosalud ('Donostia');
La función
edad_medico_cod(codigo) a la que se hace referencia es:
Código:
CREATE OR REPLACE FUNCTION edad_medico_cod (integer) RETURNS integer AS $$
SELECT EXTRACT('year' FROM (SELECT AGE(fechanac) FROM medico WHERE codigo=$1))::integer
$$ LANGUAGE SQL;