

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

# 按位聚合函数
<a name="c_bitwise_aggregate_functions"></a>

按位聚合函数会进行位运算，以聚合整数列和可转换或舍入为整数值的列。

**Topics**
+ [在按位聚合中使用 NULL](#c_bitwise_aggregate_functions-nulls-in-bit-wise-aggregations)
+ [按位聚合的 DISTINCT 支持](#distinct-support-for-bit-wise-aggregations)
+ [按位函数的概述示例](#r_bitwise_example)
+ [BIT\$1AND 函数](r_BIT_AND.md)
+ [BIT\$1OR 函数](r_BIT_OR.md)
+ [BOOL\$1AND 函数](r_BOOL_AND.md)
+ [BOOL\$1OR 函数](r_BOOL_OR.md)

## 在按位聚合中使用 NULL
<a name="c_bitwise_aggregate_functions-nulls-in-bit-wise-aggregations"></a>

在将按位函数应用于可为 null 的列时，在计算函数结果之前将消除任何 NULL 值。如果没有行符合聚合资格，则按位函数将返回 NULL。相同的行为适用于常规的聚合函数。以下为示例。

```
select sum(venueseats), bit_and(venueseats) from venue
where venueseats is null;

sum  | bit_and
------+---------
null |    null
(1 row)
```

## 按位聚合的 DISTINCT 支持
<a name="distinct-support-for-bit-wise-aggregations"></a>

与其他聚合函数相同的是，按位函数也支持 DISTINCT 关键字。

但是，将 DISTINCT 用于这些函数不会影响结果。值的第一个实例足以满足按位 AND 或 OR 操作。如果重复值出现在正在计算的表达式中，不会造成任何差异。

由于 DISTINCT 处理可能会产生一些查询执行开销，我们建议不要将 DISTINCT 用于按位函数。

## 按位函数的概述示例
<a name="r_bitwise_example"></a>

下面，您可以找到一些概述示例，说明如何使用按位函数。您还可以通过每个函数描述找到具体的代码示例。

按位函数的示例以 TICKIT 示例数据库为基础。TICKIT 示例数据库中的 USERS 表包含多个布尔列，该类列指示每个用户是否喜欢各种类型的活动，如运动、戏剧、歌剧等。下面是一个示例。

```
select userid, username, lastname, city, state, 
likesports, liketheatre
from users limit 10;

userid | username | lastname  |     city     | state | likesports | liketheatre
-------+----------+-----------+--------------+-------+------------+-------------
1 | JSG99FHE | Taylor    | Kent         | WA    | t          | t
9 | MSD36KVR | Watkins   | Port Orford  | MD    | t          | f
```

假定新版本的 USERS 表是以不同的方式构建的。在此新版本中，包含一个整数列，该列定义（以二进制格式）每个用户喜欢或不喜欢的 8 种类型的事件。在此设计中，每个位位置均代表一类活动。某个喜欢全部 8 种类型的用户已将全部 8 个位设置为 1（如下表的第一行中所示）。不喜欢任何这些活动的用户已将全部 8 个位设置为 0（请见第二行）。仅喜欢运动和爵士乐的用户显示在以下第三行中：

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/redshift/latest/dg/c_bitwise_aggregate_functions.html)

在数据库表中，这些二进制值可作为整数存储在一个 LIKES 列中，如下所示。

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/redshift/latest/dg/c_bitwise_aggregate_functions.html)