SQL для поиска количества различных значений в столбце

Я могу выбрать все уникальные значения в столбце, следующим образом:

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

но как получить количество строк из этого запроса? Требуется ли вложенный запрос?

8 ответов


можно использовать DISTINCT сайта в COUNT агрегатная функция:

SELECT COUNT(DISTINCT column_name) AS some_alias FROM table_name

Это будет считать только отдельные значения для этого столбца.


Это даст вам как отдельные значения столбцов, так и количество каждого значения. Обычно я обнаруживаю, что хочу знать обе части информации.

select distinct columnName, count(columnName) as CountOf from tableName group by columnName

имейте в виду, что Count () игнорирует значения null, поэтому, если вам нужно разрешить null как свое собственное отдельное значение, вы можете сделать что-то хитрое, как:

select count(distinct my_col)
       + count(distinct Case when my_col is null then 1 else null end)
from my_table
/

SELECT COUNT(DISTINCT column_name) FROM table as column_name_count;

вы должны сосчитать этот отдельный col, а затем дать ему псевдоним.


sql сумма уникальных значений column_name и отсортированы по частоте:

SELECT column_name, COUNT(*) FROM table_name GROUP BY column_name ORDER BY 2 DESC;

select count(*) from 
(
SELECT distinct column1,column2,column3,column4 FROM abcd
) T

Это даст количество различных групп столбцов.


select Count(distinct columnName) as columnNameCount from tableName 

Count (distinct ({fieldname})) является избыточным

просто Count ({fieldname}) дает вам все различные значения в этой таблице. Он не будет (как многие предполагают) просто дать вам количество таблицы [т. е. не то же самое, что Count (*) из таблицы]