Sql 仅选择Oracle中计数的前10名
我需要创建一个查询,在该查询中,我只选择oracle中某个计数的前十名,但我似乎无法正确获得它。我读过关于使用排名的文章,但到目前为止,我还没有弄明白Sql 仅选择Oracle中计数的前10名,sql,oracle,select,greatest-n-per-group,Sql,Oracle,Select,Greatest N Per Group,我需要创建一个查询,在该查询中,我只选择oracle中某个计数的前十名,但我似乎无法正确获得它。我读过关于使用排名的文章,但到目前为止,我还没有弄明白 select col , count(col) from table_name group by col 您可以使用另一个查询包装此查询,并使用rownum伪列: SELECT col, cnt FROM (SELECT col , COUNT(col) AS cnt FROM table_name
select col , count(col) from table_name group by col
您可以使用另一个查询包装此查询,并使用rownum伪列:
SELECT col, cnt
FROM (SELECT col , COUNT(col) AS cnt
FROM table_name
WHERE col IS NOT NULL
GROUP BY col
ORDER BY 2 DESC)
WHERE rownum <= 10
这似乎非常接近,但我得到了一个错误。不是单一的组功能。我原以为在语句末尾添加另一个groupby会起作用,但是col count只会返回为每个col的一个。它确实有效。cnt中输入的第一个select语句错误。现在我看到返回的最大值是该列中所有null/empty值。我需要排除那个可能非常简单的选项。@WeVie添加了一个where子句来排除空cols-应该可以做到这一点。