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.

Contar los IDs distintos según el tipo y la fecha en SQL.

Tengo una tabla donde los datos se ven así. Estoy buscando el recuento total de cada TIPO en función de la FECHA.

Tabla

Entonces, para los datos anteriores, el resultado sería:

Resultado Requerido

Intenté la siguiente consulta pero el resultado contiene duplicados contados más de una vez.

SELECT 
    FECHA,
    SUM(CASE WHEN TIPO = 'Existente' THEN 1 ELSE 0 END) AS 'EXISTENTE',
    SUM(CASE WHEN TIPO = 'Nuevo' THEN 1 ELSE 0 END) AS 'NUEVO'
FROM 
    mitabla
WHERE 
    FECHA >= '2022-01-01'
GROUP BY
    FECHA;

Resultado de la consulta anterior:

Descripción de la imagen aquí

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para obtener el recuento total de cada TIPO según la FECHA, sin contar duplicados más de una vez, necesitamos utilizar la palabra clave DISTINCT en la función COUNT. Aquí está la consulta modificada que dará el resultado deseado:

    SELECT 
        FECHA,
        COUNT(DISTINCT CASE WHEN TIPO = 'Existente' THEN ID END) AS "EXISTENTE",
        COUNT(DISTINCT CASE WHEN TIPO = 'Nuevo' THEN ID END) AS "NUEVO"
    FROM 
        mi_tabla
    WHERE 
        FECHA >= '2022-01-01'
    GROUP BY    
        FECHA ;
    

    En esta consulta, estamos utilizando la función COUNT con la palabra clave DISTINCT para contar los valores únicos de ID para cada combinación de TIPO y FECHA. Esto asegurará que los duplicados no se cuenten más de una vez.

    El resultado de esta consulta será igual al resultado deseado.

Comments are closed.