SQL para encontrar el número de valores distintos en una columna

Resuelto Christian Oudard asked hace 16 años • 14 respuestas

Puedo seleccionar todos los valores distintos en una columna de las siguientes maneras:

  • SELECT DISTINCT column_name FROM table_name;
  • SELECT column_name FROM table_name GROUP BY column_name;

¿Pero cómo obtengo el recuento de filas de esa consulta? ¿Se requiere una subconsulta?

Christian Oudard avatar Sep 27 '08 02:09 Christian Oudard
Aceptado

Puede utilizar la DISTINCTpalabra clave dentro de la COUNTfunción agregada:

SELECT COUNT(DISTINCT column_name) AS some_alias FROM table_name

Esto contará solo los valores distintos para esa columna.

Noah Goodrich avatar Sep 26 '2008 19:09 Noah Goodrich

Esto le dará AMBOS valores de columna distintos y el recuento de cada valor. Normalmente encuentro que quiero conocer ambas piezas de información.

SELECT [columnName], count([columnName]) AS CountOf
FROM [tableName]
GROUP BY [columnName]
Paul James avatar Oct 27 '2012 15:10 Paul James

Una suma SQL de los valores únicos de column_name y ordenados por frecuencia:

SELECT column_name, COUNT(*) FROM table_name GROUP BY column_name ORDER BY 2 DESC;
xchiltonx avatar May 20 '2015 00:05 xchiltonx

Tenga en cuenta que Count() ignora los valores nulos, por lo que si necesita permitir el valor nulo como su propio valor distintivo, puede hacer algo complicado como:

select count(distinct my_col)
       + count(distinct Case when my_col is null then 1 else null end)
from my_table
/
David Aldridge avatar Sep 26 '2008 21:09 David Aldridge