Supabase函数开发:获取24小时内Top10活跃用户
获取最近24小时活跃度Top10成员的Supabase函数
直接用PostgreSQL函数实现需求,以下是完整代码:
CREATE OR REPLACE FUNCTION get_top_active_users_last_24h() RETURNS TABLE(user_id UUID, user_name TEXT, message_count INT) AS $$ BEGIN RETURN QUERY SELECT u.uuid AS user_id, u.name AS user_name, COUNT(m.uuid) AS message_count FROM messages m JOIN users u ON m.created_by = u.uuid WHERE m.created_at >= NOW() - INTERVAL '24 hours' GROUP BY u.uuid, u.name ORDER BY message_count DESC, u.name ASC LIMIT 10; END; $$ LANGUAGE plpgsql STABLE;
关键细节说明
- 表关联逻辑:通过
messages.created_by与users.uuid的外键关联,直接替换外键ID为用户真实姓名 - 时间范围筛选:用
NOW() - INTERVAL '24 hours'精准锁定最近24小时内的消息数据 - 分组统计规则:按用户UUID和姓名分组(PostgreSQL要求SELECT中非聚合字段必须纳入GROUP BY),统计单用户的消息发送总量
- 排序逻辑:优先按消息数降序排列,同消息数时按姓名升序保证结果排序稳定
- 结果限制:用
LIMIT 10直接截取活跃度最高的前10位用户
调用方式
在Supabase SQL编辑器或客户端执行以下语句获取结果:
SELECT * FROM get_top_active_users_last_24h();
内容的提问来源于stack exchange,提问作者Jedi Schmedi
相关产品推荐
相关产品推荐

