SQL para encontrar o número de valores distintos em uma coluna
Pergunta
Eu posso selecionar todos os valores distintos em uma coluna das seguintes formas:
-
SELECT DISTINCT column_name FROM table_name;
-
SELECT column_name FROM table_name GROUP BY column_name;
Mas como faço para obter a contagem de linhas de essa consulta? É uma subconsulta necessário?
Solução
Você pode usar a palavra-chave DISTINCT
dentro do função agregada COUNT
:
SELECT COUNT(DISTINCT column_name) AS some_alias FROM table_name
Isto irá contar apenas os valores distintos para essa coluna.
Outras dicas
Isto irá dar-lhe tanto os valores da coluna distintas e a contagem de cada valor. Eu costumo achar que eu quero saber ambas as peças de informação.
select distinct columnName, count(columnName) as CountOf from tableName group by columnName
Esteja ciente de que Count () ignora valores nulos, por isso, se você precisa para permitir nulo como o seu próprio valor distinto você pode fazer algo complicado como:
select count(distinct my_col)
+ count(distinct Case when my_col is null then 1 else null end)
from my_table
/
select count(*) from
(
SELECT distinct column1,column2,column3,column4 FROM abcd
) T
Isto dará a contagem de grupo distinto de colunas.
SELECT COUNT(DISTINCT column_name) FROM table as column_name_count;
você tem que contar que col distinta, em seguida, dar-lhe um apelido.
Um sql soma de valores exclusivos de column_name e ordenados pela frequência:
SELECT column_name, COUNT(*) FROM table_name GROUP BY column_name ORDER BY 2 DESC;
select Count(distinct columnName) as columnNameCount from tableName
**
Usando o seguinte SQL podemos obter o valor distinto coluna contagem em Oracle 11g.
**
Select count(distinct(Column_Name)) from TableName
select count(distinct(column_name)) AS columndatacount from table_name where somecondition=true
Você pode usar essa consulta, a contar de dados diferentes / distintos. Graças
Contagem (distinto ({nomedocampo})) é redundante
Simplesmente Contagem ({nome do campo}) dá-lhe todos os valores distintos em que mesa. Não vai (como muitos supõem) apenas dar-lhe o conde da mesa [ou seja, Não o mesmo que Count (*) da tabela]