
# Group
#### 算子说明
Group算子用于处理Group By子句，对下层排序元组进行分组操作，返回结果是按分组键分组后的结果。
#### 典型场景
分组操作：查询某列有多少个不同的值，其作用类似于DISTINCT。
#### 示例
**示例：**查询语句中包含GROUP BY子句
```
--数据准备。 
gaussdb=# CREATE TABLE student(id integer, class_id integer, grade number); 
CREATE TABLE 
gaussdb=# INSERT INTO student VALUES(generate_series(1,50), 1, floor(100 * random())); 
INSERT 0 50 
gaussdb=# INSERT INTO student VALUES(generate_series(51,100), 2, floor(100 * random())); 
INSERT 0 50 
gaussdb=# INSERT INTO student VALUES(generate_series(101,150), 3, floor(100 * random())); 
INSERT 0 50 
gaussdb=# INSERT INTO student VALUES(generate_series(151,200), 3, floor(100 * random())); 
INSERT 0 50
--执行结果。 
gaussdb=# SET enable_hashagg = off;
SET
gaussdb=# EXPLAIN SELECT class_id FROM student GROUP BY class_id ORDER BY class_id; 
                             QUERY PLAN                               
--------------------------------------------------------------------- 
 Group  (cost=10.64..11.64 rows=3 width=4) 
   Group By Key: class_id 
   ->  Sort  (cost=10.64..11.14 rows=200 width=4) 
         Sort Key: class_id 
         ->  Seq Scan on student  (cost=0.00..3.00 rows=200 width=4) 
(5 rows) 
--删除。
gaussdb=# DROP TABLE student;
```
上述示例中，Group算子输出信息如下所示。
| 信息名称         | 含义                         |
|:---|:---|
| Group        | 算子的名称。                     |
| Group By Key | 分组的关键字，示例中以class_id为关键字分组。 |
   
