SQL用于查找列中不同值的数量

Chr*_*ard 327 sql distinct

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

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

但是如何从该查询中获取行数呢?是否需要子查询?

Noa*_*ich 587

您可以DISTINCTCOUNT聚合函数中使用关键字:

SELECT COUNT(DISTINCT column_name) AS some_alias FROM table_name
Run Code Online (Sandbox Code Playgroud)

这将仅计算该列的不同值.

  • 也适用于A`从表组中选择A,COUNT(DISTINCT B)的组 (12认同)
  • 整洁,我不知道你可以在那里放置distinct关键字. (6认同)
  • 你可以将这个例子扩展到多个列上的不同吗? (5认同)

小智 166

这将为您提供不同的列值和每个值的计数.我经常发现我想知道这两条信息.

SELECT [columnName], count([columnName]) AS CountOf
FROM [tableName]
GROUP BY [columnName]
Run Code Online (Sandbox Code Playgroud)

  • 由于你是按`columnName`分组的,你已经只获得了一次不同的值,而`distinct`关键字在这里没有做任何事情.没有它的情况下尝试查询,结果集完全相同. (58认同)

Dav*_*dge 26

请注意Count()忽略空值,因此如果您需要允许null作为其自己的不同值,您可以执行一些棘手的操作:

select count(distinct my_col)
       + count(distinct Case when my_col is null then 1 else null end)
from my_table
/
Run Code Online (Sandbox Code Playgroud)


xch*_*onx 15

column_name的唯一值的sql总和并按频率排序:

SELECT column_name, COUNT(*) FROM table_name GROUP BY column_name ORDER BY 2 DESC;
Run Code Online (Sandbox Code Playgroud)

  • IMO绝对是最好的答案 (2认同)

小智 13

select count(*) from 
(
SELECT distinct column1,column2,column3,column4 FROM abcd
) T
Run Code Online (Sandbox Code Playgroud)

这将给出不同组列的计数.


Pet*_* II 11

SELECT COUNT(DISTINCT column_name) FROM table as column_name_count;
Run Code Online (Sandbox Code Playgroud)

你必须计算那个不同的col,然后给它一个别名.


Way*_*yne 5

select Count(distinct columnName) as columnNameCount from tableName 
Run Code Online (Sandbox Code Playgroud)