TigerGraph聚合查询
TigerGraph是一种高性能图数据库,支持多种聚合查询操作。下面是一些TigerGraph支持的聚合查询类型以及示例:
1. Count:计算满足特定条件的顶点或边的数量。
示例:计算图中所有顶点的数量。
CREATE QUERY countVertices() FOR GRAPH MyGraph {
SumAccum<int> @count;
start = {Any};
start = select s from start:s
accumulate s.@count += 1;
print start.@count;
}
2. Sum:计算指定属性的和。
示例:计算图中所有顶点的年龄之和。
CREATE QUERY calculateAgeSum() FOR GRAPH MyGraph {
SumAccum<int> @ageSum;
start = {Person.*};
start = select s from start:s
accumulate s.@ageSum += s.age;
print start.@ageSum;
}
3. Average:计算指定属性的平均值。
示例:计算图中所有顶点的年龄平均值。
CREATE QUERY calculateAverageAge() FOR GRAPH MyGraph {
SumAccum<int> @ageSum;
SumAccum<int> @count;
start = {Person.*};
start = select s from start:s
accumulate s.@ageSum += s.age, s.@count += 1;
print start.@ageSum / start.@count;
}
4. Max和Min:计算指定属性的最大值和最小值。
示例:计算图中所有顶点的年龄的最大值和最小值。
CREATE QUERY findMinMaxAge() FOR GRAPH MyGraph {
MinAccum<int> @minAge;
MaxAccum<int> @maxAge;
start = {Person.*};
start = select s from start:s
accumulate s.@minAge += s.age, s.@maxAge += s.age;
print start.@minAge, start.@maxAge;
}
5. Group by:按照指定属性进行分组,然后对每个组进行聚合操作。
示例:计算按性别分组的每个组内的人数。
CREATE QUERY groupByGender() FOR GRAPH MyGraph {
GroupAccum<int> @countByGender;
start = {Person.*};
start = select s from start:s
accumulate s.@countByGender += 1
group by s.gender;
print start.@countByGender;
}
需要注意的是,这里示例中的表结构和样例数据并没有提供,你可以根据自己的数据模型和需求进行相应的调整和实现。