如何在SurrealDB中创建post_stats预定义聚合视图
解决方案
需求梳理
我拥有user表(字段包含id(主键)、name、email等),同时拥有city表(字段包含id(主键)、name等)。通过RELATE语句创建了作为user与city之间图边的post表,其结构包含user_id(关联user.id)、city_id(关联city.id)、post_count(用户在对应城市的发帖数)字段。现需创建名为post_stats的预定义聚合视图,结构包含city_id、city_name、user_count(该城市关联的用户总数)、post_total(该城市总发帖数)。
实现语句
针对使用RELATE语句的图数据库(如NebulaGraph),可使用以下语句创建聚合视图:
CREATE AGGREGATE VIEW post_stats AS SELECT c.id AS city_id, c.name AS city_name, COUNT(DISTINCT p.user_id) AS user_count, SUM(p.post_count) AS post_total FROM post p JOIN city c ON p.city_id = c.id GROUP BY c.id, c.name;
语句说明
- 通过
JOIN关联post边表与city表,获取城市名称信息 COUNT(DISTINCT p.user_id)统计每个城市关联的唯一用户数量SUM(p.post_count)累加该城市下所有用户的发帖数,得到总发帖量- 按城市
id和name分组,确保每个城市的统计结果唯一
内容的提问来源于stack exchange,提问作者Raj Chaudhary
相关产品推荐
相关产品推荐

