SQL - subconsultas y groupby

 
Vista:

subconsultas y groupby

Publicado por Matias (1 intervención) el 26/04/2015 20:00:00
Saludos gente, estoy haciendo un par de ejercicio el cual es de pl/sql, pero estoy haciendo la consulta correspondiente usando las tablas que vienen por defecto en el sql developer.
La idea es consultar cuál empleado tiene más empleado (valga la redundancia) a su cargo me tendría que devolver a Steven King con 14 empleados a su cargo, o el manager_id 100 con 14 empleados a su cargo. En primera instancia tenía este código.

select b.manager_id, count(a.employee_id) from employees a, departments b
where a.manager_id= b.MANAGER_ID
group by b.manager_id;


como pueden ver no está ni el 'fist_name' ni el 'last_name' de la tabla y me devuelve una agrupación de todos los empleados que no son 0 o null, como sería la subconsulta para que me arroje el primer registro? Intentaba con dos agrupaciones 'max(count())' en un having pero como no se puede me dejo colgado.

Saludos a todos.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 806
Bronce
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

subconsultas y groupby

Publicado por leonardo_josue (1173 intervenciones) el 27/04/2015 18:23:57
Hola Matías:

Hay muchas formas de obtener el dato que necesitas, sin embargo, todo depende de cómo tienes organizados tus datos... no sé con qué BD's de ejemplo estás probando, no nos dices cómo es la estructura de tus tablas ni nos pones datos de ejemplo, por lo tanto puede ser algo complicado tratar de ayudarte.

En Oracle hay muchas funciones que te pueden ayudar a hacer lo que quieres... por ejemplo están las funciones RANK y ROW_NUMBER, hace unos pocos días puse para otro compañero que te puede servir:

http://www.lawebdelprogramador.com/foros/SQL/1491843-ayuda-con-consulta.html

Observa al final del post, es un ejercicio muy similar a lo que quieres hacer... por un lado, con la idea que expones, NO PUEDES OBTENER UN MAX(COUNT(*)) PUES EL COUNT SÓLO EXISTE AL FINAL DE LA EJECUCIÓN DE LA CONSULTA...

tal como expreso en el mismo post, lo puedes hacer con subconsultas:

1
2
3
SELECT MAX(total)
FROM ( SELECT COUNT(*) total
         FROM EXAMENES GROUP BY ALUMNO) T;

Dale un vistazo a la liga que te pongo creo que te puede servir de mucho, si continuas con problemas, postea la estructura de tus tablas y pon algunos datos de ejemplo, y con gusto tratamos de ayudarte.

Saludos
Leo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar