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.

¿Cómo obtener resultados máximos de una consulta SQL?

Tengo una consulta muy simple y estoy atascado tratando de filtrar solo el MAX(b.id):

SELECT 
A.id,
b.id
FROM emp A
JOIN ACS B
ON B.id = A.id
AND A.id = 1553

En la tabla B, tenemos tres filas para A.ID. Necesito obtener solo el número más alto. Intenté usar “MAX(B.ID)” pero no funcionó.

Estos son los resultados:

[
     {
          "rownumber": 1,
          "A.id": 1553,
          "b.id": 749
     },
     {
          "rownumber": 2,
          "A.id": 1553,
          "b.id": 4356
     },
     {
          "rownumber": 3,
          "A.id": 1553,
          "b.id": 4661
     }
]

Solo necesito devolver el MAX(b.ID). En este caso, solo necesito:

     {
          "rownumber": 3,
          "emp_id": 1553,
          "id": 4661
     }

Eliminaré A.id de la selección del filtro y para cada fila en A solo necesito el MAX de B.

¡Gracias de antemano!

¿Cuál es la mejor manera de hacerlo?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para filtrar solo el MAX(b.id) para cada A.id, puede utilizar una subconsulta para seleccionar el MAX(b.id) para cada A.id y luego unirlo nuevamente a la consulta original. Aquí hay un ejemplo de consulta:

    SELECT A.id, B.id
    FROM emp A
    JOIN ACS B ON B.id = A.id
    AND A.id = 1553
    JOIN (SELECT id, MAX(id) AS max_id FROM ACS GROUP BY id) AS max_b
    ON max_b.id = B.id AND max_b.max_id = B.id
    

    Esto devolverá solo la fila con el id más alto para A.id=1553:

    [
         {
              "rownumber": 1,
              "A.id": 1553,
              "B.id": 4661
         }
    ]
    

    Al utilizar una subconsulta para encontrar el id más alto para cada A.id, puede luego unirlo nuevamente a la consulta original para filtrar las demás filas.

Comments are closed.