SQL来查找列中不同值的数量

我可以通过以下方式select列中的所有不同值:

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

但是,如何从该查询获得行计数? 是否需要子查询?

您可以在COUNT聚合函数中使用DISTINCT关键字:

 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作为自己独特的值,你可以做一些棘手的事情,如:

 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,然后给它一个别名。

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

这将会给出不同组的列数。

一个sql的总和column_name的唯一值,并按频率sorting:

 SELECT column_name, COUNT(*) FROM table_name GROUP BY column_name ORDER BY 2 DESC; 
 select Count(distinct columnName) as columnNameCount from tableName 

计数(distinct({fieldname}))是多余的

简单计数({fieldname})为您提供该表中所有不同的值。 它不会(像许多假设)只是给你表的计数[即不同于表中的计数(*)]