SAP HANA SQL 함수: 유형 및 예제

⚡ 스마트 요약

SAP HANA SQL 함수는 데이터를 애플리케이션 계층으로 이동시키지 않고 쿼리 내에서 값을 변환합니다. 데이터 유형 변환, 날짜 및 시간, 전체 텍스트, 숫자, 문자열, 윈도우 및 기타 작업의 7가지 범주가 있습니다.

  • 🔄 변환 함수: CAST, TO_BIGINT, TO_ALPHANUM 및 TO_BINARY는 값을 한 데이터 유형에서 다른 데이터 유형으로 변경합니다.
  • 📅 날짜 및 시간 함수: ADD_DAYS, ADD_MONTHS 및 ADD_SECONDS는 날짜 및 시간 값을 이동하거나 형식을 변경합니다.
  • 🔍 전문 보기 기능: SCORE 및 관련 함수는 텍스트 검색에서 반환된 결과의 순위를 매깁니다.
  • 🔢 수의 함수: ABS, ROUND 및 POWER 함수는 숫자 입력을 받아 숫자 결과를 반환합니다.
  • 🔤 문자열 함수: ASCII, CHAR 및 CONCAT 함수는 문자 입력을 처리하고 파생 값을 반환합니다.
  • 🪟 창 함수: RANK, DENSE_RANK 및 ROW_NUMBER는 결과 집합을 윈도우 파티션으로 나눕니다.
  • 🧰 기타 : CONVERT_CURRENCY와 CURRENT_SCHEMA는 나머지 6개 그룹에 속하지 않는 작업을 처리합니다.

SAP HANA SQL 함수

SAP HANA SQL 함수

SAP HANA는 다음을 제공합니다. SAP HANA 기능-

  1. 데이터 유형 변환 기능 – 데이터 유형 변환 기능은 하나의 데이터 유형을 다른 데이터 유형으로 변환하는 데 사용됩니다. 다음은 데이터 유형 변환 함수(예: CAST, TO_ALPHANUM, TO_BIGINT, TO_BINARY 등) 목록입니다.
  2. 날짜 시간 기능 - 날짜/시간 함수는 날짜/시간을 다른 형식으로 변환하는 데 사용됩니다. 예: ADD_DAYS, ADD_MONTHS, ADD_SECOND 등.
  3. 전문 기능 – 전체 텍스트 기능은 텍스트 검색에 사용됩니다. 예: SCORE 등.
  4. 숫자 기능 - 숫자 함수는 숫자 값 또는 숫자 문자가 포함된 문자열을 입력으로 받아 숫자 값을 반환합니다. 예: 절댓값, 반올림, 거듭제곱 등
  5. 문자열 함수 – 문자열 함수는 문자열을 입력으로 받아 함수 이름에 따라 처리하고 값을 반환합니다. 예: (ASCII, CHAR, CONCAT 등)
  6. 창 기능 – 윈도우 함수를 사용하면 쿼리 결과 집합을 윈도우 파티션이라는 이름의 행 그룹으로 나눌 수 있습니다. 예: RANK(), DENSE_RANK(), ROW_NUMBER() 등.
  7. 기타 기능- 기타 작업에 사용되는 몇 가지 추가 기능이 있습니다. 예: CONVERT_CURRENCY, CURRENT_SCHEMA 등

위의 모든 함수는 데이터베이스 엔진 내부에서 평가되므로, 로직을 함수에 넣는 것이 애플리케이션에서 행을 가져와 처리하는 것보다 거의 항상 더 빠릅니다. 아래 예제에서는 더미 테이블(DUMMY 테이블)을 사용하는데, 이 테이블은 실제 데이터를 건드리지 않고 표현식을 테스트할 수 있도록 존재하는 단일 행 시스템 테이블입니다.

스칼라 함수, 집계 함수 및 윈도우 함수

예제를 살펴보기 전에, 함수가 쿼리에서 어떻게 동작하는지를 결정하는 한 가지 중요한 차이점을 알아두어야 합니다. 바로 입력되는 행의 수와 출력되는 행의 수입니다.

카테고리 들어오는 행 수 : 나가는 행 수 그룹화(GROUP BY)가 필요하신가요?
스칼라 한 줄씩 나란히 아니 상, 원형, 날짜, 캐스트
골재 여러 행을 한 행으로 네, 전체 세트가 하나의 그룹이 아닌 경우에는 그렇습니다. 합집합, AVG, 개수, 최소값, 최대값
여러 행에서 여러 행으로 아니요, OVER를 사용합니다. 순위, 밀집 순위, 행 수, 지연
작업대 결과 집합을 반환합니다. FROM 절에서 사용됨 시리즈 생성 날짜

실질적인 결과는 집계 함수는 세부 정보를 축소하는 반면 윈도우 함수는 이를 보존한다는 것입니다. 각 직원과 해당 부서의 평균을 함께 요청하려면 윈도우 함수가 필요합니다. GROUP BY를 사용하면 개별 행이 완전히 제거되기 때문입니다.

공통의 SAP HANA 함수 및 예제

아래 명령문은 SQL 콘솔에 바로 붙여넣을 수 있습니다. 각 명령문은 위 목록의 한 범주를 보여줍니다.

1) 문자열 함수. 이 함수들은 문자 입력을 받아 파생 값을 반환합니다.

SELECT
  UPPER('sap hana')               AS UPPER_TEXT,
  LENGTH('SAP HANA')              AS TEXT_LENGTH,
  CONCAT('SAP ', 'HANA')         AS JOINED,
  SUBSTRING('SAP HANA', 5, 4)   AS PART,
  REPLACE('SAP HANA', 'HANA', 'S/4') AS SWAPPED,
  TRIM('  padded  ')             AS CLEANED
FROM DUMMY;

2) 수의 함수. 반올림 동작은 테스트해 볼 가치가 있습니다. ROUND는 상용 반올림 방식을 사용하는 반면 FLOOR와 CEIL은 항상 한 방향으로만 움직이기 때문입니다.

SELECT
  ABS(-45.7)          AS ABSOLUTE_VALUE,
  ROUND(123.4567, 2) AS ROUNDED,
  FLOOR(9.9)          AS ROUNDED_DOWN,
  CEIL(9.1)           AS ROUNDED_UP,
  POWER(2, 10)       AS RAISED,
  MOD(17, 5)         AS REMAINDER
FROM DUMMY;

3) 날짜 및 시간 기능. 이것들은 기간별 보고에 가장 자주 필요한 항목들입니다.

SELECT
  CURRENT_DATE                              AS TODAY,
  ADD_DAYS(CURRENT_DATE, 30)                AS IN_30_DAYS,
  ADD_MONTHS(CURRENT_DATE, -1)              AS LAST_MONTH,
  DAYS_BETWEEN('2026-01-01', CURRENT_DATE) AS ELAPSED,
  LAST_DAY(CURRENT_DATE)                    AS MONTH_END,
  WEEKDAY(CURRENT_DATE)                     AS DAY_INDEX
FROM DUMMY;

4) 변환 기능. 명시적 변환은 WHERE 절의 속도를 저하시키는 암묵적인 유형 강제 변환을 방지합니다.

SELECT
  CAST('1234' AS INTEGER)               AS AS_NUMBER,
  TO_VARCHAR(CURRENT_DATE, 'DD.MM.YYYY') AS AS_TEXT,
  TO_DECIMAL(1234.5678, 10, 2)         AS AS_DECIMAL
FROM DUMMY;

타입 동작 및 각 대상 타입의 한계는 다음에서 다룹니다. SAP HANA 데이터 유형.

윈도우 함수 설명

윈도우 함수는 현재 행과 관련된 행 집합에 걸쳐 계산을 수행하며, 행들을 병합하지 않습니다. OVER 절은 이러한 행 집합을 정의하며, 두 가지 선택적 요소가 있습니다. PARTITION BY는 데이터를 그룹으로 분할하고, ORDER BY는 각 그룹 내에서 순서를 지정합니다.

SELECT
  DEPARTMENT,
  EMP_NAME,
  SALARY,
  ROW_NUMBER() OVER (PARTITION BY DEPARTMENT ORDER BY SALARY DESC) AS ROW_NUM,
  RANK()       OVER (PARTITION BY DEPARTMENT ORDER BY SALARY DESC) AS RANKING,
  DENSE_RANK() OVER (PARTITION BY DEPARTMENT ORDER BY SALARY DESC) AS DENSE_RANKING,
  SUM(SALARY)  OVER (PARTITION BY DEPARTMENT) AS DEPT_TOTAL
FROM DHK_SCHEMA.EMPLOYEE;

세 가지 순위 지정 함수는 값이 같을 때만 차이가 납니다.

  • 행 번호 동점은 절대 발생하지 않습니다. 동일한 급여를 받는 두 사람이라도 임의로 1과 2를 받게 됩니다.
  • 계급 동점인 행에는 같은 번호를 부여하고 그 다음에는 건너뜁니다. 1인 두 행 다음에 3인 행이 옵니다.
  • 밀집 순위 동점인 행에는 같은 번호를 부여하고 건너뛰지 않습니다. 1인 두 행 다음에는 2인 행이 옵니다.

ROW_NUMBER는 중복 제거에, RANK는 경쟁 방식 순위 지정에, DENSE_RANK는 순서가 끊어지지 않아야 할 때 사용합니다. 이러한 함수와 함께 사용되는 비교 및 ​​논리 기호는 다음에서 다룹니다. SAP HANA 연산자그리고 문장 구조는 다음과 같습니다. SAP 하나SQL.

자주 묻는 질문

DUMMY는 정확히 하나의 행만 포함하는 시스템 테이블입니다. 이를 통해 SELECT 문에서 실제 테이블을 참조하지 않고도 표현식이나 함수를 평가할 수 있습니다.

두 방법 모두 동률인 행에 동일한 번호를 부여합니다. RANK는 다음 값을 건너뛰므로 1위가 두 번 나오면 3위가 나옵니다. DENSE_RANK는 건너뛰지 않으므로 1위가 두 번 나오면 2위가 나옵니다.

예. 변환 과정을 평이한 언어로 설명하면 일치하는 함수와 구문을 찾을 수 있으므로 수백 개의 항목으로 구성된 참조 목록을 살펴보는 것보다 빠릅니다.

흔히 발생합니다. 필터링된 열을 감싸는 함수는 효율적인 필터링을 방해할 수 있으며, AI는 해당 열을 그대로 유지하도록 조건자를 재구성할 수 있습니다. 실행 계획을 통해 확인하십시오.

네, 하지만 해당 상수를 열에 적용하면 모든 행에 대해 평가가 강제됩니다. 가능하면 상수를 변환하여 열을 효율적으로 필터링할 수 있도록 하세요.

이 게시물을 요약하면 다음과 같습니다.