Cita:
Iniciado por gnzsoloyo Nadie ha dicho que hay aun problema con lo que estés trabajando. La pregunta es porque suele suceder que una misma query en dos DBMS se puede escribir de formas diferentes, de acuerdo a las particularidades de cada uno.
El problema que te enfrentas es, en realidad, de entendimientos de las consultas.
La primera que te piden dice esto:
Esto significa que necesitas los
nombres de los empleados con menor salario por cada departamento. Pero no te pide qué salario, y esencialmente tampoco el departamento, pero esto ultimo está implícito.
Lo primero que debes saber es cuál es el salario más bajo por departamento:
Código SQL:
Ver originalSELECT department_id, MIN (salary) Salary
FROM employee
GROUP BY department_id, first_name;
En este contexto debes verificar sobre dos datos y no uno, por lo que mi idea sería:
Código SQL:
Ver originalSELECT department_id, first_name
FROM employee
WHERE (department_id, salary) IN (SELECT department_id, MIN (salary) Salary
FROM employee
GROUP BY department_id, first_name);
Esto te puede devolver varias veces el mismo departamento, de acuerdo a cuantos empelados haya con ese mismo sueldo...
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.
Creo que he encontrado una solución. que ahora que me fijo es muy parecida a la tuya, pero sigue sin satisfacerme del todo, quizás porque sea demasiado cabezón. Lo que he hecho ha sido utilizar la única consulta que funciona
Código SQL:
Ver originalSELECT department_id, MIN (salary) Salary
FROM employee
GROUP BY department_id
Y meterla dentro de una subconsulta, haciendo que me muestre el nombre que tenga un salario que coincida con la consulta que acabo de poner. Esta es la solución que he encontrado:
Código SQL:
Ver originalSELECT first_name, department_id, salary
FROM employee
WHERE (department_id, salary) IN
(SELECT department_id, MIN (salary) Salary
FROM employee
GROUP BY department_id)
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. Lo que me extraña, ¿es qué no se puede agrupar por varias columnas y una función?