[DUDA] Consulta SQL

IlziX

Buenas!!

A ver si me podeís ayudar a resolver la siguiente consulta que no se sacarla :(

tengo la tabla empleados con:
IDempleado
trabajo
salario

Tengo que sacar los empleados cuyo salario es mayor que el salario medio que corresponde a su trabajo.

Sé sacar el salario medio para cada trabajo pero no sé como juntar las consultas luego... Estoy muy verde en esto.

Muchas gracias!!!

afhn

Has probado con una subconsulta?

1 respuesta
dabolbi
SELECT * FROM Empleado WHERE salario > (SELECT AVG(salario) FROM Empleado)

prueba a ver, igual hay una manera más simple. Así de memoria es la que se me viene.

1 1 respuesta
IlziX

#2 no sé como hacerla para que me salga directamente, porque al tener varios tipos de trabajo no sé si tengo que hacer una por trabajo o como hacerlo

#3 así lo que sale son los empleados que tienen un sueldo medio mayor que el del resto de empleados(todos), pero lo que necesito es los empleados cuyo sueldo es mayor al sueldo medio de un grupo de trabajo, no de toda la tabla (¿no sé si me explico? XD)

por ejemplo, tengo veterinarios y comerciales, y quiero saber los veterinarios que tienen un sueldo mayor que la media de veterinarios, comerciales que tienen un sueldo mayor que la media de comerciales

1 respuesta
RaymaN
SELECT e.*
FROM empleados e
JOIN (
    SELECT trabajo, AVG(salario) AS 'media'
    FROM empleados
    GROUP BY trabajo) avgs ON avgs.trabajo = e.trabajo
WHERE e.salario > avgs.media

Llevo toda la mañana con MySQL y puede que ya no dé para más y esté mal xD

2 respuestas
afhn

#4 Qué datos hay dentro de cada una de las entradas?
Lo suyo es dividir en tres partes lo que quieres:

SELECT *
FROM empleados
WHERE trabajo=(
SELECT trabajo FROM empleados WHERE salario> ( SELECT AVG(salario) FROM empleados )

SELECT *
FROM empleados
WHERE salario=(
SELECT AVG ( salario ) FROM empleados WHERE trabajo> ( SELECT trabajo FROM empleados )

Alguno tiene que funcionar xd. Prueba a ver.

Camp1

#1

SELECT IDempleado, trabajo, salario 
FROM empleados 
GROUP BY IDempleado, trabajo, salario 
HAVING salario > avg(salario);
IlziX

#5 si que me ha funcionado!!!!!! muchisimas gracias!!

podeis cerrar el tema!!

1 respuesta
Camp1

#8 puedes probar #7, solo por curiosidad

1 respuesta
IlziX

#9 me dice no hay resultados a esa consulta, con la de #5 sí que me sale la respuesta bien :psyduck:

Usuarios habituales

  • IlziX
  • Camp1
  • afhn
  • RaymaN
  • dabolbi