温馨提示×

sql中collect_set函数的作用是什么

sql
小亿
83
2024-06-11 09:27:16
栏目: 云计算

在 SQL 中,`COLLECT_SET()` 函数用于将分组内的多个值去重后收集到一个集合(array)中。这个函数通常与 `GROUP BY` 子句一起使用,以对每个分组执行某种操作。

`COLLECT_SET()` 函数的语法如下:

```sql

COLLECT_SET(expr) OVER (PARTITION BY partition_expression, ... [ORDER BY sort_expression [ASC | DESC], ...])

```

- `expr`:需要收集的列或表达式的值。

- `PARTITION BY partition_expression, ...`:指定分组的列或表达式。

- `ORDER BY sort_expression [ASC | DESC], ...`:(可选)指定集合内元素的排序顺序。

以下是一个简单的示例来说明 `COLLECT_SET()` 函数的用法:

假设我们有一个名为 `students` 的表,其中包含学生的姓名和选课信息:

| id | name | course |

|----|-------|--------|

| 1 | Alice | Math |

| 2 | Alice | English|

| 3 | Bob | Math |

| 4 | Bob | Science|

| 5 | Carol | English|

我们想要找出每个学生所选的课程列表,可以使用以下查询:

```sql

SELECT name, COLLECT_SET(course) as courses

FROM students

GROUP BY name;

```

查询结果如下:

| name | courses |

|-------|------------------|

| Alice | ["Math", "English"]|

| Bob | ["Math", "Science"]|

| Carol | ["English"] |

在这个例子中,`COLLECT_SET()` 函数将每个学生的选课信息去重后收集到一个数组中。

0