如何在Oracle中计算唯一行数

35

我有一个包含许多列的Oracle数据库表格。我想要计算完全独特行的数量。我唯一能找到的是:

SELECT COUNT(DISTINCT col_name) FROM table;

然而,这需要我列出所有的列,但我还没有找到能够为我完成这个任务的语法。我猜想这是因为这个查询会非常低效?有什么推荐的方法吗?


1
可能是[SQL-如何计算列的唯一组合]的重复问题(https://dev59.com/X2oy5IYBdhLWcg3wfOF4)。 - Organic Advocate
4个回答

57

怎么样?

SELECT COUNT(*) 
FROM (SELECT DISTINCT * FROM Table)

13
我来这里是希望找到更简单的方法,而不必使用子查询。 - John Doe

19

这取决于你想要实现什么目标。为了获取特定列的不同行数,以便你知道存在哪些数据,以及有多少条不同的数据:

SELECT DISTINCT 

A_CODE, COUNT(*) 

FROM MY_ARCHV

GROUP BY A_CODE

--这告诉我有93个独特的代码,以及每个代码有多少个。

另一种方法

--如何计算Oracle表中某种类型值的数量:
select A_CDE, --您需要计数的值
count(*) as numInstances --每个值的数量
from A_ARCH --它所在的表格
group by A_CDE --排序方法

无论哪种方式,你都会得到像这样的结果:

A_CODE  Count(*)

1603    32

1600    2

1605    14

2
SELECT DISTINCT  **col_name**, count(*) FROM **table_name** group by **col_name**

3
请注意,“仅代码”答案并不被鼓励。如果必要,至少请格式化它! - GhostCat

2
我认为您想要从像这样的表中计算所有不同行的数量。
select count(1) as c
from (
    select distinct *
    from tbl
) distinct_tbl;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接