【问题标题】:How to count unique rows in Oracle如何计算Oracle中的唯一行
【发布时间】:2014-10-23 22:35:26
【问题描述】:

我有一个包含很多列的 oracle 数据库表。我想计算完全唯一的行数。我唯一能找到的是:

SELECT COUNT(DISTINCT col_name) FROM table;

但是,这需要我列出所有列,而我无法想出适合我的语法。我猜这是因为这个查询的性能非常低?有推荐的方法吗?

【问题讨论】:

标签: sql oracle


【解决方案1】:

怎么样

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

【讨论】:

  • 我来到这里是因为我希望有更简单的方法而不使用子查询。
【解决方案2】:

这取决于您要完成的工作。 要按特定列获取不同行的计数,以便您知道存在哪些数据,以及有多少不同的数据:

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

【讨论】:

    【解决方案3】:

    我认为您想要从这样的表中计算所有不同的行

    select count(1) as c
    from (
        select distinct *
        from tbl
    ) distinct_tbl;
    

    【讨论】:

      【解决方案4】:
      SELECT DISTINCT  **col_name**, count(*) FROM **table_name** group by **col_name**
      

      【讨论】:

      • 请注意,不鼓励使用“仅代码”的答案。如果有的话,至少要正确格式化!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-12-18
      • 1970-01-01
      • 1970-01-01
      • 2018-04-20
      • 2012-09-25
      • 1970-01-01
      • 2019-12-08
      相关资源
      最近更新 更多