Ver Mensaje Individual
  #8 (permalink)  
Antiguo 27/04/2015, 06:01
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Duda elemental de Group By.

Cita:
Iniciado por verdeazultrans Ver Mensaje
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 original
  1. SELECT department_id, MIN (salary) Salary
  2. FROM employee
  3. 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 original
  1. SELECT department_id, first_name, salary
  2. FROM employee
  3. WHERE (department_id, salary)
  4.     IN (SELECT department_id, MIN (salary) Salary
  5.     FROM employee
  6.     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.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)