Cita:
Iniciado por verdeazultrans No te entiendo
En tu último post dijiste esto:
Cita: La diferencia entre esta y todas las anteriores es que la agrupación se hace por una columna y la columna de la función, no por tres columnas.
COn eso se entiende que la columna donde se aplcia la funcion agrupada (MIN()), está dentro de las columnas del GROUP BY, cosa prohibida en todos los DBMS.
Si eso no es así, trata de describirlo mejor para evitar confusiones.
Tu agrupamiento
no es con la columna de la función, sino que estás agrupando por
department_id, first_name.
Vamos a ver si se entiende: Esa forma de agrupar te funcionaría en MySQL, pero no en Oracle, porque Oracle no admite que un GROUP BY contenga columnas que no aparezcan en el SELECT, con la sola excelcion de las afectadas por las clausulas agrupadas.
¿Se entiende?
Entonces, para poner el
first_name necesitarías ponerla en el SELECT, pero si haces eso te listará todos los empleados con su salario, ya que el agrupamiento tomaría las dos columnas, y no sólo el departamento.
¿Se entiende?
Bien, el problema que tienes es que listar el salario minimo de un departameno es fácil:
Código SQL:
Ver originalSELECT department_id, MIN (salary) Salary
FROM employee
GROUP BY department_id;
Pero listar los nombres de aquellos que lo cobren, no. Porque deberías obtenerlo de otra consulta incompatible. Por eso mi propuiesta de esto:
Código SQL:
Ver originalSELECT department_id, first_name, salary
FROM employee
WHERE (department_id, salary)
IN (SELECT department_id, MIN (salary) Salary
FROM employee
GROUP BY department_id, first_name);
Ahora bien, tu me dices que esto:
Cita: Gracias por tu ayuda pero esa consulta sigue sin funcionar, aparece las mismas filas (32) que en mi consulta original a pesar de que existen 10 departamentos, y he podido comprobar que no aparecen tantos porque tengan el mismo salario.
lo cual me resulta súmamente extraño
En primer lugar, postea la consulta como la copiaste tu, ya que no puedo estar seguro de que hayas hecho lo correcto. Más de una vez han copiado mal las cosas.
En segundo lugar, postea el resultado que te devuelve la query. También nos ha pasado que no esté correctamente interpretado.