Skip to content

Commit d7150b5

Browse files
💬Generate LLM translations (#1968)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
1 parent f8b7898 commit d7150b5

File tree

3 files changed

+110
-89
lines changed

3 files changed

+110
-89
lines changed
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
title: GROUP_CONCAT
3+
---
4+
5+
[LISTAGG](aggregate-listagg.md) 的别名。
Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
---
2+
title: LISTAGG
3+
---
4+
import FunctionDescription from '@site/src/components/FunctionDescription';
5+
6+
<FunctionDescription description="Introduced or updated: v1.2.725"/>
7+
8+
将多行中的值连接成一个字符串,并用指定的分隔符分隔。此操作可以使用两种不同的函数类型执行:
9+
- 聚合函数:连接发生在整个结果集的所有行中。
10+
- 窗口函数:连接发生在结果集的每个分区中,由 `PARTITION BY` 子句定义。
11+
12+
## 语法
13+
14+
```sql
15+
-- Aggregate Function
16+
LISTAGG([DISTINCT] <expr> [, <delimiter>])
17+
[WITHIN GROUP (ORDER BY <order_by_expr>)]
18+
19+
-- Window Function
20+
LISTAGG([DISTINCT] <expr> [, <delimiter>])
21+
[WITHIN GROUP (ORDER BY <order_by_expr>)]
22+
OVER ([PARTITION BY <partition_expr>])
23+
```
24+
25+
| Parameter | Description |
26+
|---------------------------------|---------------------------------------------------------------------------------------------------|
27+
| `DISTINCT` | 可选。在连接之前删除重复的值。 |
28+
| `<expr>` | 要连接的表达式(通常是列或表达式)。 |
29+
| `<delimiter>` | 可选。用于分隔每个连接值的字符串。如果省略,则默认为空字符串。 |
30+
| `ORDER BY <order_by_expr>` | 定义连接值的顺序。 |
31+
| `PARTITION BY <partition_expr>` | 将行划分为分区,以便在每个组中单独执行聚合。 |
32+
33+
## 别名
34+
35+
- [STRING_AGG](aggregate-string-agg.md)
36+
- [GROUP_CONCAT](aggregate-group-concat.md)
37+
38+
## 返回类型
39+
40+
字符串。
41+
42+
## 示例
43+
44+
在此示例中,我们有一个客户订单表。每个订单都属于一个客户,我们想要创建一个列表,其中包含每个客户购买的所有产品。
45+
46+
```sql
47+
CREATE TABLE orders (
48+
customer_id INT,
49+
product_name VARCHAR
50+
);
51+
52+
INSERT INTO orders (customer_id, product_name) VALUES
53+
(1, 'Laptop'),
54+
(1, 'Mouse'),
55+
(1, 'Laptop'),
56+
(2, 'Phone'),
57+
(2, 'Headphones');
58+
```
59+
60+
以下示例使用 `LISTAGG` 作为聚合函数与 GROUP BY 结合使用,将每个客户购买的所有产品连接成一个字符串:
61+
62+
```sql
63+
SELECT
64+
customer_id,
65+
LISTAGG(product_name, ', ') WITHIN GROUP (ORDER BY product_name) AS product_list
66+
FROM orders
67+
GROUP BY customer_id;
68+
```
69+
70+
```sql
71+
┌─────────────────────────────────────────┐
72+
│ customer_id │ product_list │
73+
├─────────────────┼───────────────────────┤
74+
2 │ Headphones, Phone │
75+
1 │ Laptop, Laptop, Mouse │
76+
└─────────────────────────────────────────┘
77+
```
78+
79+
以下示例使用 `LISTAGG` 作为窗口函数,因此每行都保留其原始详细信息,但也显示客户组的完整产品列表:
80+
81+
```sql
82+
SELECT
83+
customer_id,
84+
product_name,
85+
LISTAGG(product_name, ', ') WITHIN GROUP (ORDER BY product_name)
86+
OVER (PARTITION BY customer_id) AS product_list
87+
FROM orders;
88+
```
89+
90+
```sql
91+
┌────────────────────────────────────────────────────────────┐
92+
│ customer_id │ product_name │ product_list │
93+
├─────────────────┼──────────────────┼───────────────────────┤
94+
2 │ Phone │ Headphones, Phone │
95+
2 │ Headphones │ Headphones, Phone │
96+
1 │ Laptop │ Laptop, Laptop, Mouse │
97+
1 │ Mouse │ Laptop, Laptop, Mouse │
98+
1 │ Laptop │ Laptop, Laptop, Mouse │
99+
└────────────────────────────────────────────────────────────┘
100+
```
Lines changed: 5 additions & 89 deletions
Original file line numberDiff line numberDiff line change
@@ -1,89 +1,5 @@
1-
---
2-
title: STRING_AGG
3-
---
4-
5-
聚合函数。
6-
7-
STRING_AGG() 函数(也称为 GROUP_CONCAT 或 LISTAGG)将列中的所有非 NULL 值连接为一个字符串,并使用分隔符分隔。
8-
9-
## 语法
10-
11-
```sql
12-
STRING_AGG(<expr> [, delimiter]) [ WITHIN GROUP ( <orderby_clause> ) ]
13-
GROUP_CONCAT(<expr> [, delimiter]) [ WITHIN GROUP ( <orderby_clause> ) ]
14-
LISTAGG(<expr> [, delimiter]) [ WITHIN GROUP ( <orderby_clause> ) ]
15-
```
16-
17-
:::info
18-
如果 `<expr>` 不是字符串表达式,应使用 `::VARCHAR` 进行转换。
19-
20-
例如:
21-
```sql
22-
SELECT string_agg(number::VARCHAR, '|') AS s FROM numbers(5);
23-
+-----------+
24-
| s |
25-
+-----------+
26-
| 0|1|2|3|4 |
27-
+-----------+
28-
```
29-
:::
30-
31-
## 参数
32-
33-
| 参数 | 描述 |
34-
|------------|-------------------------------------------------------------|
35-
| `<expr>` | 任何字符串表达式(如果不是字符串,使用 `::VARCHAR` 进行转换) |
36-
37-
## 可选参数
38-
39-
| 可选参数 | 描述 |
40-
|-------------------------------------|------------------------------------------------------|
41-
| `delimiter` | 可选常量字符串,如果未指定,则使用空字符串 |
42-
| WITHIN GROUP [&lt;orderby_clause&gt;](https://docs.databend.com/sql/sql-commands/query-syntax/query-select#order-by-clause) | 定义有序集合聚合中值的顺序 |
43-
44-
## 返回类型
45-
46-
字符串类型
47-
48-
## 示例
49-
50-
**创建表并插入示例数据**
51-
52-
```sql
53-
CREATE TABLE programming_languages (
54-
id INT,
55-
language_name VARCHAR
56-
);
57-
58-
INSERT INTO programming_languages (id, language_name)
59-
VALUES (1, 'Python'),
60-
(2, 'JavaScript'),
61-
(3, 'Java'),
62-
(4, 'C#'),
63-
(5, 'Ruby');
64-
```
65-
66-
**查询示例:使用分隔符连接编程语言名称**
67-
```sql
68-
SELECT STRING_AGG(language_name, ', ') AS concatenated_languages
69-
FROM programming_languages;
70-
```
71-
72-
**结果**
73-
```sql
74-
| concatenated_languages |
75-
|------------------------------------------|
76-
| Python, JavaScript, Java, C#, Ruby |
77-
```
78-
79-
**查询示例:使用 `WITHIN GROUP` 按降序连接编程语言名称**
80-
```sql
81-
SELECT STRING_AGG(language_name, ', ') WITHIN GROUP ( ORDER BY language_name DESC ) AS concatenated_languages
82-
FROM programming_languages;
83-
```
84-
**结果**
85-
```sql
86-
| concatenated_languages |
87-
|------------------------------------------|
88-
| Ruby, Python, JavaScript, Java, C# |
89-
```
1+
---
2+
title: STRING_AGG
3+
---
4+
5+
[LISTAGG](aggregate-listagg.md) 的别名。

0 commit comments

Comments
 (0)