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

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

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

Но как мне получить количество строк из этого запроса? Требуется ли подзапрос?

Какую версию SQL Server вы используете?

Kevin Fairchild 26.09.2008 23:54
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
364
1
585 206
11
Перейти к ответу Данный вопрос помечен как решенный

Ответы 11

select Count(distinct columnName) as columnNameCount from tableName 
Ответ принят как подходящий

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

SELECT COUNT(DISTINCT column_name) AS some_alias FROM table_name

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

Отлично, я не знал, что вы можете поместить туда отдельное ключевое слово.

Christian Oudard 26.09.2008 23:55

также работает на группах select A,COUNT(DISTINCT B) from table group by A

tmanthey 18.04.2013 19:07

Можете ли вы расширить этот пример, чтобы выделить несколько столбцов?

eugene 05.03.2015 09:41

11 лет спустя, и это все еще полезно

wundermahn 18.07.2019 22:17

SELECT COUNT(DISTINCT column_name) FROM table as column_name_count;

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

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

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

Я действительно думаю, что в вашем заявлении по делу было сказано: case when my_col is null then 1 else my_col end

James Jensen 11.03.2015 21:19

Для наглядности: SELECT my_col, COUNT(my_col) + COUNT(CASE WHEN my_col IS NULL THEN 1 ELSE NULL END) as CountOf from my_Table GROUP BY my_col

Michael Paulukonis 18.06.2015 20:59

count (*) включает нули

PragmaticProgrammer 12.07.2017 20:05

@PragmaticProgrammer Думаю, да, но нет такой вещи, как нулевая строка, только нулевое значение, а count(*) - это, в частности, количество строк.

David Aldridge 06.01.2018 17:50

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

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

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

SELECT [columnName], count([columnName]) AS CountOf
FROM [tableName]
GROUP BY [columnName]

Счетчик (отдельный ({fieldname})) является избыточным

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

Нет, это нет правильно. count(field) возвращает количество строк, где field - это not null.

Antti29 26.03.2015 10:22

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

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

Определенно лучший ответ ИМО

Briford Wylie 29.08.2019 03:20

**

Using following SQL we can get the distinct column value count in Oracle 11g.

**

Select count(distinct(Column_Name)) from TableName

select count(distinct(column_name)) AS columndatacount from table_name where somecondition=true

Вы можете использовать этот запрос для подсчета разных / разных данных. Спасибо

После MS SQL Server 2012 вы также можете использовать оконную функцию.

   SELECT column_name, 
   COUNT(column_name) OVER (Partition by column_name) 
   FROM table_name group by column_name ; 

Другие вопросы по теме