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.

SQL (Presto): Devolver la fecha en la que la suma de x es igual a un umbral determinado

Tengo una tabla como la siguiente. Quiero devolver la fecha cuando la suma de los Resultados que no sean igual a ‘na’ sea igual a 4.

Fecha ID Resultado
12-01-21 a Negativo
12-01-21 b Negativo
12-02-21 b Negativo
12-02-21 c na
12-03-21 d Positivo

Resultado deseado:

Fecha
2021-03-21

¿Cuál es la forma más eficiente de hacer esto?
Tengo una idea sobre algunos elementos que la gente utiliza al buscar rápidamente, como algunas combinaciones de funciones de rango, consultas internas o WITH, pero no conozco la estructura o el formato en el que se deben organizar.

Por ejemplo, lógicamente estaba pensando en clasificar la tabla por fecha y luego tomar la fecha cuando el recuento de fechas sea igual a 4, pero no estoy seguro de la estructura. Puedo idear la lógica, es la estructura la que me resulta difícil.

Gracias por su paciencia y tiempo 🙂

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Una posible solución utilizando SQL:

    SELECT Fecha
    FROM (
      SELECT Fecha, COUNT(CASE WHEN Resultado <> 'na' THEN 1 END) AS conteo_no_na
      FROM mi_tabla
      GROUP BY Fecha
    ) AS conteos
    WHERE conteo_no_na = 4
    

    Explicación:

    • Usamos una subconsulta para agrupar las filas por Fecha y contar cuántas de ellas tienen un valor distinto de ‘na’ en la columna Resultado, utilizando un COUNT condicional con una expresión CASE.
    • Luego utilizamos la consulta externa para filtrar solo las fechas donde el conteo de no-na es igual a 4.

Comments are closed.