es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Encontrar el valor menos frecuente en una columna SIN ORDER BY SQL MariaDB.

Tengo un esquema de estudiantes matriculados en un nivel, la pregunta es encontrar el nivel que tenga la menor cantidad de estudiantes que estén en el año ‘2000/01’ y con el ID de programa ‘G500’, PERO no puedo usar ORDER BY o LIMIT. Esta es la mejor respuesta que pude encontrar.

SELECT lvl
FROM   enrl
WHERE  ayr = '2000/01'
       AND pid = 'G500'
GROUP  BY lvl
ORDER  BY Count(*) DESC; 
Tags:  ,

Answer

  1. Avatar for davy.ai

    Esta consulta se acerca, pero viola la restricción de no usar ORDER BY o LIMIT. Aquí hay un enfoque alternativo que cumple con los requisitos:

    SELECT lvl
    FROM   enrl
    WHERE  ayr = '2000/01'
           AND pid = 'G500'
    GROUP  BY lvl
    HAVING Count(*) = (
      SELECT MIN(cnt)
      FROM   (
        SELECT COUNT(*) AS cnt
        FROM   enrl
        WHERE  ayr = '2000/01'
               AND pid = 'G500'
        GROUP  BY lvl
      ) AS t
    )
    

    Esta consulta utiliza una subconsulta para encontrar el recuento mínimo de estudiantes en todos los niveles en el año y programa especificados. Luego, compara el recuento para cada nivel en la cláusula GROUP BY de la consulta principal con esta cuenta mínima utilizando la cláusula HAVING. Solo se devuelven los niveles con el recuento mínimo. Tenga en cuenta que este enfoque es menos eficiente que el uso de ORDER BY o LIMIT, por lo que puede no ser adecuado para conjuntos de datos grandes.

Comments are closed.