文档

UNIQ

更新时间:

UNIQ是计算非重复值个数的聚合函数,与COUNT DISTINCT函数类似,本文为您介绍在Hologres如何使用UNIQ函数。

使用限制

  • 仅Hologres V1.3及以上版本支持使用UNIQ函数,如果您的实例是V1.3以下版本,请您使用自助升级或加入Hologres钉钉交流群反馈,详情请参见如何获取更多的在线支持?

  • SQL中必须包含GROUP BY,且GROUP BY的字段比较均匀(不倾斜),UNIQ才能发挥比COUNT DISTINCT更好的性能。

语法

UNIQ函数用于计算某一列去重后的行数,结果返回一个去重值。

UNIQ ( < column > );

参数说明如下。

参数

描述

column

需要计算去重后行数的列。

支持SMALLINT、INTEGER、BIGINT、REAL、DOUBLE PRECISION、TEXT、VARCHAR、TIMESTAMP、TIMESTAMPTZ、DATE、TIMETZ、UUID类型。

使用说明如下。

  • 一般来说,UNIQ在GROUP BY KEY的KEY基数较高时,比COUNT DISTINCT性能更好,同时UNIQ比COUNT DISTINCT更节省内存,如果使用COUNT DISTINCT遇到内存超限时,可以换用UNIQ。

  • 从Hologres V2.1版本开始,Hologres针对COUNT DISTINCT场景做了非常多的性能优化(包括单个COUNT DISTINCT、多个COUNT DISTINCT、数据倾斜、SQL没有GROUP BY字段等场景),无需再手动改写成UNIQ实现,即可实现更好的性能。详情请参见Count Distinct优化

示例

计算ORDERS表的O_CUSTKEY列去重后行的数值语句如下。

SELECT UNIQ ( O_CUSTKEY ) FROM ORDERS;

--不同O_ORDERSTATUS下O_CUSTKEY去重数
SELECT O_ORDERSTATUS, UNIQ ( O_CUSTKEY ) FROM ORDERS GROUP BY O_ORDERSTATUS;
  • 本页导读 (1)
文档反馈