【发布时间】:2014-10-23 22:35:26
【问题描述】:
我有一个包含很多列的 oracle 数据库表。我想计算完全唯一的行数。我唯一能找到的是:
SELECT COUNT(DISTINCT col_name) FROM table;
但是,这需要我列出所有列,而我无法想出适合我的语法。我猜这是因为这个查询的性能非常低?有推荐的方法吗?
【问题讨论】:
我有一个包含很多列的 oracle 数据库表。我想计算完全唯一的行数。我唯一能找到的是:
SELECT COUNT(DISTINCT col_name) FROM table;
但是,这需要我列出所有列,而我无法想出适合我的语法。我猜这是因为这个查询的性能非常低?有推荐的方法吗?
【问题讨论】:
怎么样
SELECT COUNT(*)
FROM (SELECT DISTINCT * FROM Table)
【讨论】:
这取决于您要完成的工作。 要按特定列获取不同行的计数,以便您知道存在哪些数据,以及有多少不同的数据:
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
【讨论】:
我认为您想要从这样的表中计算所有不同的行
select count(1) as c
from (
select distinct *
from tbl
) distinct_tbl;
【讨论】:
SELECT DISTINCT **col_name**, count(*) FROM **table_name** group by **col_name**
【讨论】: