我可以通过以下方式选择列中的所有不同值:
SELECT DISTINCT column_name FROM table_name;
SELECT column_name FROM table_name GROUP BY column_name;
但是如何从该查询中获取行数?是否需要子查询?
column_name的唯一值的sql总和并按频率排序:
SELECT column_name, COUNT(*) FROM table_name GROUP BY column_name ORDER BY 2 DESC;
这将为您提供不同的列值和每个值的计数 . 我经常发现我想知道这两条信息 .
select distinct columnName, count(columnName) as CountOf from tableName group by columnName
Count(distinct())是多余的
Simply Count()为您提供该表中的所有不同值 . 它不会(尽可能多的假设)只给你表的计数[即与表中的Count(*)不同
select Count(distinct columnName) as columnNameCount from tableName
SELECT COUNT(DISTINCT column_name) FROM table as column_name_count;
你必须计算那个不同的col,然后给它一个别名 .
请注意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(*) from ( SELECT distinct column1,column2,column3,column4 FROM abcd ) T
这将给出不同组列的计数 .
您可以在COUNT聚合函数中使用 DISTINCT 关键字:
DISTINCT
SELECT COUNT(DISTINCT column_name) AS some_alias FROM table_name
这将仅计算该列的不同值 .
8 回答
column_name的唯一值的sql总和并按频率排序:
这将为您提供不同的列值和每个值的计数 . 我经常发现我想知道这两条信息 .
Count(distinct())是多余的
Simply Count()为您提供该表中的所有不同值 . 它不会(尽可能多的假设)只给你表的计数[即与表中的Count(*)不同
你必须计算那个不同的col,然后给它一个别名 .
请注意Count()忽略空值,因此如果您需要允许null作为其自己的不同值,您可以执行一些棘手的操作:
这将给出不同组列的计数 .
您可以在COUNT聚合函数中使用
DISTINCT
关键字:这将仅计算该列的不同值 .