BITOR_AGG

BITOR_AGG (비트 OR 집계)

그룹 안의 모든 비-NULL 숫자 레코드의 비트별 OR(bitwise OR) 값을 반환해요.

출처: Snowflake SQL Reference - BITOR_AGG

본문

각 비트 위치에 대해, 적어도 한 행이 해당 비트를 1로 설정했다면 결과에서 그 비트는 1로 설정돼요. 모든 행이 그 비트를 0으로 설정했다면 결과는 0이에요.

그룹 안의 모든 레코드가 NULL이거나, 그룹이 비어 있으면 함수는 NULL을 반환해요.

별칭: BITORAGG, BIT_OR_AGG, BIT_ORAGG

참고: BITAND_AGG, BITXOR_AGG, BITOR

구문

집계 함수:

BITOR_AGG( <expr1> )

윈도우 함수:

BITOR_AGG( <expr1> ) OVER ( [ PARTITION BY <expr2> ] )

인자

expr1

이 표현식은 숫자 값 또는 숫자 값으로 캐스팅할 수 있는 데이터 타입의 값으로 평가되어야 해요.

expr2

이 표현식은 행을 파티션으로 묶는 데 사용돼요.

반환 값

반환 값의 데이터 타입은 NUMBER(38, 0)이에요.

사용 시 참고 사항

  • 숫자 값은 가장 가까운 INTEGER 데이터 타입으로 집계돼요. 소수 및 부동 소수점 값은 집계 전에 가장 가까운 정수로 반올림돼요.

  • 문자/텍스트 열(데이터 타입 VARCHAR, CHAR, STRING 등)을 집계하면 입력 값이 암시적으로 FLOAT로 캐스팅된 다음 가장 가까운 정수로 반올림돼요. 캐스팅이 불가능하면 값은 NULL로 처리돼요.

  • 이 함수에 DISTINCT 키워드를 지정할 수 있지만, 효과는 없어요.

  • 이 함수를 윈도우 함수로 호출할 때는 다음을 지원하지 않아요.

    • OVER 절 안의 ORDER BY 절.

    • 명시적 윈도우 프레임(window frame).

예시

테이블을 만들고 데이터를 로드해요.

CREATE OR REPLACE TABLE bitwise_example
 (k INT, d DECIMAL(10,5), s1 VARCHAR(10), s2 VARCHAR(10));

INSERT INTO bitwise_example VALUES
 (15, 1.1, '12', 'one'),
 (26, 2.9, '10', 'two'),
 (12, 7.1, '7.9', 'two'),
 (14, NULL, NULL, 'null'),
 (8, NULL, NULL, 'null'),
 (NULL, 9.1, '14', 'nine');

데이터를 표시해요.

SELECT k AS k_col, d AS d_col, s1, s2
 FROM bitwise_example
 ORDER BY k_col;
+-------+---------+------+------+
| K_COL | D_COL   | S1   | S2   |
|-------+---------+------+------|
|     8 |    NULL | NULL | null |
|    12 | 7.10000 | 7.9  | two  |
|    14 |    NULL | NULL | null |
|    15 | 1.10000 | 12   | one  |
|    26 | 2.90000 | 10   | two  |
|  NULL | 9.10000 | 14   | nine |
+-------+---------+------+------+

데이터를 조회해요.

SELECT BITOR_AGG(k),
 BITOR_AGG(d),
 BITOR_AGG(s1)
 FROM bitwise_example;
+--------------+--------------+---------------+
| BITOR_AGG(K) | BITOR_AGG(D) | BITOR_AGG(S1) |
|--------------+--------------+---------------|
|           31 |           15 |            14 |
+--------------+--------------+---------------+

데이터를 조회하고 GROUP BY 절을 사용해요.

SELECT s2,
 BITOR_AGG(k),
 BITOR_AGG(d)
 FROM bitwise_example
 GROUP BY s2
 ORDER BY 3;
+------+--------------+--------------+
| S2   | BITOR_AGG(K) | BITOR_AGG(D) |
|------+--------------+--------------|
| one  |           15 |            1 |
| two  |           30 |            7 |
| nine |         NULL |            9 |
| null |           14 |         NULL |
+------+--------------+--------------+

이 함수에 NUMBER 값으로 변환할 수 없는 문자열을 전달하면 오류가 반환돼요.

SELECT BITOR_AGG(s2)
 FROM bitwise_example;
100038 (22018): Numeric value 'one' is not recognized

더 알아보기