카테고리:

집계 함수 (비트) , 윈도우 함수 (일반) , 비트 식 함수

BITXOR_AGG

그룹에 있는 모든 NULL 이외의 숫자 레코드의 비트 XOR 값을 반환합니다.

각 비트 위치에서, 짝수 행의 해당 비트가 1로 설정되어 있는 경우 함수는 해당 비트에 대해 0을 반환하며, 홀수 행의 해당 비트가 1로 설정되어 있는 경우 함수는 해당 비트에 대해 1을 반환합니다.

그룹 내의 모든 레코드가 NULL이거나 그룹이 비어 있는 경우, 함수는 NULL을 반환합니다.

별칭:

BITXORAGG , BIT_XOR_AGG, BIT_XORAGG

참고 항목:

BITAND_AGG , BITOR_AGG

BITXOR

구문

집계 함수

BITXOR_AGG( [ DISTINCT ] <expr1> )
Copy

윈도우 함수

BITXOR_AGG( [ DISTINCT ] <expr1> ) OVER ( [ PARTITION BY <expr2> ] )
Copy

인자

expr1

입력 식은 숫자로 평가되거나 숫자로 변환될 수 있는 식이어야 합니다.

expr2

이 식은 파티션의 행을 그룹화하는 데 사용됩니다.

반환

반환된 값의 데이터 타입은 NUMERIC(38, 0)입니다.

사용법 노트

  • 숫자 값은 가장 가까운 정수 데이터 타입으로 집계됩니다. 10진수 및 부동 소수점 값은 집계 전에 가장 가까운 정수로 반올림됩니다.

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

  • 윈도우 함수로 사용되는 경우:

    • 이 함수는 다음을 지원하지 않습니다.

      • OVER() 절의 ORDER BY 하위 절.

      • 윈도우 프레임.

테이블을 만들고 데이터를 로딩합니다.

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');
Copy

데이터를 표시합니다.

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 |
+-------+---------+------+------+
Copy

데이터를 쿼리합니다.

select bitxor_agg(k), bitxor_agg(d), bitxor_agg(s1) from bitwise_example;
+---------------+---------------+----------------+
| BITXOR_AGG(K) | BITXOR_AGG(D) | BITXOR_AGG(S1) |
|---------------+---------------+----------------|
|            31 |            12 |              0 |
+---------------+---------------+----------------+
Copy

데이터를 쿼리하고 GROUP BY 를 사용합니다.

select s2, bitxor_agg(k), bitxor_agg(d) from bitwise_example group by s2
    order by 3;
+------+---------------+---------------+
| S2   | BITXOR_AGG(K) | BITXOR_AGG(D) |
|------+---------------+---------------|
| one  |            15 |             1 |
| two  |            22 |             4 |
| nine |          NULL |             9 |
| null |             6 |          NULL |
+------+---------------+---------------+
Copy

숫자로 변환할 수 없는 이 함수 문자열을 전달하는 경우, 오류가 발생합니다.

select bitxor_agg(s2) from bitwise_example;
Copy
100038 (22018): Numeric value 'one' is not recognized
Copy