【发布时间】:2008-09-26 19:52:48
【问题描述】:
我可以通过以下方式选择列中的所有不同值:
SELECT DISTINCT column_name FROM table_name;SELECT column_name FROM table_name GROUP BY column_name;
但是如何从该查询中获取行数?是否需要子查询?
【问题讨论】:
我可以通过以下方式选择列中的所有不同值:
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 A,COUNT(DISTINCT B) from table group by A
这将为您提供不同的列值和每个值的计数。我通常发现我想知道这两条信息。
SELECT [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
/
【讨论】:
case when my_col is null then 1 else my_col end
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
count(*) 是行数。
column_name 的唯一值的 sql 总和并按频率排序:
SELECT column_name, COUNT(*) FROM table_name GROUP BY column_name ORDER BY 2 DESC;
【讨论】:
SELECT COUNT(DISTINCT column_name) FROM table as column_name_count;
你必须计算那个不同的 col,然后给它一个别名。
【讨论】:
select count(*) from
(
SELECT distinct column1,column2,column3,column4 FROM abcd
) T
这将给出不同列组的计数。
【讨论】:
select Count(distinct columnName) as columnNameCount from tableName
【讨论】:
使用以下 SQL 我们可以得到 Oracle 11g 中的不同列值计数。
select count(distinct(Column_Name)) from TableName
【讨论】:
MS SQL Server 2012之后,也可以使用窗口功能了。
SELECT column_name, COUNT(column_name) OVER (PARTITION BY column_name)
FROM table_name
GROUP BY column_name
【讨论】:
在Presto using OVER 中执行此操作:
SELECT DISTINCT my_col,
count(*) OVER (PARTITION BY my_col
ORDER BY my_col) AS num_rows
FROM my_tbl
使用这种基于OVER 的方法当然是可选的。在上面的 SQL 中,我发现指定 DISTINCT 和 ORDER BY 是必要的。
注意:根据docs,使用GROUP BY 可能更有效。
【讨论】:
select count(distinct(column_name)) AS columndatacount from table_name where somecondition=true
您可以使用此查询来计算不同/不同的数据。
【讨论】:
Count(distinct({fieldname})) 是多余的
Simply Count({fieldname}) 为您提供该表中所有不同的值。它不会(许多人认为)只是给你桌子的计数[即与表中的 Count(*) 不同]
【讨论】:
count(field) 返回 field 为 not null 的行数。