SelectDB Enterprise
参考手册
SQL 函数
聚合函数
RETENTION

RETENTION

描述

留存函数将一组条件作为参数,类型为 1 到 32 个UInt8类型的参数,用来表示事件是否满足特定条件。任何条件都可以指定为参数。

除了第一个以外,条件成对适用:如果第一个和第二个是真的,第二个结果将是真的,如果第一个和第三个是真的,第三个结果将是真的,等等。

简单来讲,返回值数组第 1 位表示event_1的真假,第二位表示event_1真假与event_2真假相与,第三位表示event_1真假与event_3真假相与,等等。如果event_1为假,则返回全是 0 的数组。

语法

RETENTION(<event_1> [, <event_2>, ... , <event_n>]);

参数

参数说明
<event_n>n个事件条件,类型为UInt8,取值为 1 或 0

返回值

由 1 和 0 组成的最大长度为 32 位的数组,最终输出数组的长度与输入参数长度相同。

  • 1: 条件满足。

  • 0: 条件不满足。

举例

-- 创建示例表
CREATE TABLE retention_test(
    `uid` int COMMENT 'user id', 
    `date` datetime COMMENT 'date time' 
) DUPLICATE KEY(uid) 
DISTRIBUTED BY HASH(uid) BUCKETS AUTO
PROPERTIES ( 
    "replication_allocation" = "tag.location.default: 1"
);
 
-- 插入示例数据
INSERT into retention_test values 
(0, '2022-10-12'),
(0, '2022-10-13'),
(0, '2022-10-14'),
(1, '2022-10-12'),
(1, '2022-10-13'),
(2, '2022-10-12');
 
-- 计算用户留存
SELECT 
    uid,     
    RETENTION(date = '2022-10-12') AS r,
    RETENTION(date = '2022-10-12', date = '2022-10-13') AS r2,
    RETENTION(date = '2022-10-12', date = '2022-10-13', date = '2022-10-14') AS r3 
FROM retention_test 
GROUP BY uid 
ORDER BY uid ASC;
+------+------+--------+-----------+
| uid  | r    | r2     | r3        |
+------+------+--------+-----------+
|    0 | [1]  | [1, 1] | [1, 1, 1] |
|    1 | [1]  | [1, 1] | [1, 1, 0] |
|    2 | [1]  | [1, 0] | [1, 0, 0] |
+------+------+--------+-----------+
© 2025 北京飞轮数据科技有限公司 京ICP备2022004029号 | Apache、Apache Doris 以及相关开源项目名称均为 Apache 基金会商标