Quero contar o número de itens distintos em uma coluna sujeita a uma determinada condição, por exemplo, se a tabela for assim:
tag | entryID
----+---------
foo | 0
foo | 0
bar | 3
Se eu quiser contar o número de tags distintas como "contagem de tag" e contar o número de tags distintas com id de entrada> 0 como "contagem de tag positiva" na mesma tabela, o que devo fazer?
Agora estou contando a partir de duas tabelas diferentes onde, na segunda tabela, selecionei apenas as linhas com entryID maior que zero. Acho que deveria haver uma maneira mais compacta de resolver esse problema.
Experimente a seguinte afirmação:
O primeiro campo será a tag, o segundo será a contagem total e o terceiro será a contagem positiva.
fonte
Isso pode funcionar:
e
fonte
Isso também pode funcionar:
Você precisa da condição entryID na junção à esquerda, em vez de em uma cláusula where para garantir que todos os itens que tenham apenas um entryID 0 sejam contados corretamente no primeiro DISTINCT.
fonte
O código conta a combinação única / distinta de Tag e ID de entrada quando [ID de entrada]> 0
Na saída irá mostrar a contagem de valores únicos Espero que isso ajude
fonte