none
Seleccionar el MAX de un COUNT (AYUDA) RRS feed

  • Pregunta

  • Hola amigos. Tengo estas tablas y quiero VISUALIZAR EL DEPARTAMENTO CON MAS EMPLEADOS. 
    Lo he intentado así :

    Select dep_no from empleado group by count(*) having count(*) = (Select max(count(*)) from empleado group by dep_no)

    pero no ejecuta. alguien tiene alguna idea ? Gracias de antemano

    martes, 7 de noviembre de 2017 23:40

Respuestas

  • No es correcto, obtienes 40 (el valor más alto) pero por coincidencia es el valor que más se repite.

    DECLARE @Empleado table (DEP_NO int);
    INSERT INTO @Empleado VALUES
        (40), (20), (30), (10), (20), (10), (10);
    
    -- Tú propuesta
    SELECT TOP 1 DEP_NO FROM @Empleado GROUP BY DEP_NO ORDER BY DEP_NO DESC
    -- Resultado: 40 (Incorrecto)
    
    -- Propuesta realizada
    SELECT TOP 1 WITH TIES DEP_NO FROM @Empleado GROUP BY DEP_NO ORDER BY COUNT(*) DESC;
    -- Resultado: 10 (Correcto)
    GO

    miércoles, 8 de noviembre de 2017 3:43

Todas las respuestas

  • Puedes ordenar de manera descendente, según la cuenta de empleados por departamento, y tomar el primero (el de mayor valor en la cuenta), por ejemplo:

    SELECT TOP 1 WITH TIES dep_no, COUNT(*) AS Cuenta
    FROM empleado
    GROUP BY dep_no
    ORDER BY Cuenta DESC;
    GO

    • Propuesto como respuesta Jorge TurradoMVP miércoles, 8 de noviembre de 2017 15:32
    martes, 7 de noviembre de 2017 23:47
  • Gracias ! También sirve como usted dice. A mi me salio con este código, lo dejare por si a alguien lo necesite.

    SELECT TOP 1 DEP_NO FROM EMPLEADOS GROUP BY DEP_NO ORDER BY DEP_NO DESC

    miércoles, 8 de noviembre de 2017 0:42
  • No es correcto, obtienes 40 (el valor más alto) pero por coincidencia es el valor que más se repite.

    DECLARE @Empleado table (DEP_NO int);
    INSERT INTO @Empleado VALUES
        (40), (20), (30), (10), (20), (10), (10);
    
    -- Tú propuesta
    SELECT TOP 1 DEP_NO FROM @Empleado GROUP BY DEP_NO ORDER BY DEP_NO DESC
    -- Resultado: 40 (Incorrecto)
    
    -- Propuesta realizada
    SELECT TOP 1 WITH TIES DEP_NO FROM @Empleado GROUP BY DEP_NO ORDER BY COUNT(*) DESC;
    -- Resultado: 10 (Correcto)
    GO

    miércoles, 8 de noviembre de 2017 3:43