

 从补丁 198 开始，Amazon Redshift 将不再支持创建新的 Python UDF。现有的 Python UDF 将继续正常运行至 2026 年 6 月 30 日。有关更多信息，请参阅[博客文章](https://www.amazonaws.cn/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)。

# 复合表达式
<a name="r_compound_expressions"></a>

复合表达式是由算术运算符联接的一系列简单表达式。复合表达式中使用的简单表达式必须返回数字值。

## 语法
<a name="r_compound_expressions-synopsis"></a>

```
expression 
operator 
expression | (compound_expression)
```

## 参数
<a name="r_compound_expressions-arguments"></a>

 *expression*   
计算结果为值的简单表达式。

 *operator*   
 复合算术表达式可使用下列采用此优先顺序的运算符构造：  
+ ( )：用于控制计算顺序的圆括号
+ \$1、-：正号和负号/运算符
+  ^、\$1/、\$1\$1/：乘方、平方根、立方根
+ \$1、/、%：乘、除和取模运算符
+  @：绝对值
+ \$1、-：加和减
+ &、\$1、\$1、\$1、<<、>>：逻辑与、逻辑或、逻辑非、左移位、右移位运算符
+ \$1\$1：连接

 *(compound\$1expression)*   
复合表达式可以使用圆括号嵌套。

## 示例
<a name="r_compound_expressions-examples"></a>

复合表达式的示例包括以下各项。

```
('SMITH' || 'JONES')
sum(x) / y
sqrt(256) * avg(column)
rank() over (order by qtysold) / 100
(select (pricepaid - commission) from sales where dateid = 1882) * (qtysold)
```

一些函数还可嵌套在其他函数中。例如，任何标量函数都可嵌套在另一标量函数中。以下示例返回一组数字的绝对值之和：

```
sum(abs(qtysold))
```

窗口函数无法用作聚合函数或其他窗口函数的参数。以下表达式将返回错误：

```
avg(rank() over (order by qtysold))
```

窗口函数可以包含一个嵌套的聚合函数。以下表达式对值集进行求和，然后为它们排序：

```
rank() over (order by sum(qtysold))
```