blob: bc017ee22664c5ec71bf54697eedecdef796e08e [file] [log] [blame] [view]
---
{
"title": "BITMAP_AGG",
"language": "en",
"description": "Aggregates the non-NULL values of the input expression into a Bitmap. If a value is less than 0 or greater than 18446744073709551615,"
}
---
## Description
Aggregates the non-NULL values of the input expression into a Bitmap.
If a value is less than 0 or greater than 18446744073709551615, it will be ignored and not merged into the Bitmap.
## Syntax
```sql
BITMAP_AGG(<expr>)
```
## Arguments
| Argument | Description |
| -- | -- |
| `<expr>` | The column or expression to be aggregated. Supported types: TinyInt, SmallInt, Integer, BigInt. |
## Return Value
Returns a value of Bitmap type. If there is no valid data in the group, returns an empty Bitmap.
## Example
```sql
-- setup
CREATE TABLE test_bitmap_agg (
id INT,
k0 INT,
k1 INT,
k2 INT,
k3 INT,
k4 BIGINT,
k5 BIGINT
) DISTRIBUTED BY HASH(id) BUCKETS 1
PROPERTIES ("replication_num" = "1");
INSERT INTO test_bitmap_agg VALUES
(1, 10, 110, 11, 300, 10000000000, 0),
(2, 20, 120, 21, 400, 20000000000, 200000000000000),
(3, 30, 130, 31, 350, 30000000000, 300000000000000),
(4, 40, 140, 41, 500, 40000000000, 18446744073709551616),
(5, 50, 150, 51, 250, 50000000000, 18446744073709551615),
(6, 60, 160, 61, 600, 60000000000, -1),
(7, 60, 160, 120, 600, 60000000000, NULL);
```
```sql
select bitmap_to_string(bitmap_agg(k0)) from test_bitmap_agg;
```
```text
+----------------------------------+
| bitmap_to_string(bitmap_agg(k0)) |
+----------------------------------+
| 10,20,30,40,50,60 |
+----------------------------------+
```
```sql
select bitmap_to_string(bitmap_agg(k5)) from test_bitmap_agg;
```
```text
+--------------------------------------------------------+
| bitmap_to_string(bitmap_agg(k5)) |
+--------------------------------------------------------+
| 0,200000000000000,300000000000000,18446744073709551615 |
+--------------------------------------------------------+
```
```sql
select bitmap_to_string(bitmap_agg(k5)) from test_bitmap_agg where k5 is null;
```
```text
+----------------------------------+
| bitmap_to_string(bitmap_agg(k5)) |
+----------------------------------+
| |
+----------------------------------+
```
```sql
select bitmap_to_string(bitmap_agg(k5)) from test_bitmap_agg;
```
```text
+--------------------------------------------------------+
| bitmap_to_string(bitmap_agg(cast(k5 as BIGINT))) |
+--------------------------------------------------------+
| 0,200000000000000,300000000000000,18446744073709551615 |
+--------------------------------------------------------+
```