APPROX_COUNT_DISTINCT
使用 HyperLogLog 算法估算数据集中不同值的数量。
HyperLogLog 算法能够以较少的内存和时间近似计算唯一元素的数量。在处理大型数据集且可以接受估算结果时,建议使用此函数。它以牺牲一定准确性为代价,提供了一种快速且高效的返回去重计数的方法。
如需获得准确结果,请使用 COUNT_DISTINCT。更多说明请参见示例。
语法
APPROX_COUNT_DISTINCT(<expr>)
返回类型
整数型。
示例
创建表并插入示例数据
CREATE TABLE user_events (
id INT,
user_id INT,
event_name VARCHAR
);
INSERT INTO user_events (id, user_id, event_name)
VALUES (1, 1, 'Login'),
(2, 2, 'Login'),
(3, 3, 'Login'),
(4, 1, 'Logout'),
(5, 2, 'Logout'),
(6, 4, 'Login'),
(7, 1, 'Login');
查询演示:估算不同用户 ID 的数量
SELECT APPROX_COUNT_DISTINCT(user_id) AS approx_distinct_user_count
FROM user_events;
结果
| approx_distinct_user_count |
|----------------------------|
| 4 |