Saltar al contenido

COUNT DISTINCT con CONDICIONES

Solución:

Puedes probar esto:

select
  count(distinct tag) as tag_count,
  count(distinct (case when entryId > 0 then tag end)) as positive_tag_count
from
  your_table_name;

El primero count(distinct...) es fácil. El segundo, parece algo complejo, en realidad es el mismo que el primero, excepto que usa case...when cláusula. En el case...when cláusula, filtra solo los valores positivos. Los ceros o valores negativos se evaluarían como null y no se incluirá en el recuento.

Una cosa a tener en cuenta aquí es que esto se puede hacer leyendo la tabla una vez. Cuando parece que tiene que leer la misma tabla dos o más veces, en realidad puede hacerlo leyendo una vez, la mayor parte del tiempo. Como resultado, terminará la tarea mucho más rápido con menos E / S.

Pruebe la siguiente declaración:

select  distinct A.[Tag],
     count(A.[Tag]) as TAG_COUNT,
     (SELECT count(*) FROM [TagTbl] AS B WHERE A.[Tag]=B.[Tag] AND B.[ID]>0)
     from [TagTbl] AS A GROUP BY A.[Tag]

El primer campo será la etiqueta, el segundo será el recuento completo y el tercero será el recuento de los positivos.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *