SQL문

주세환·2023년 9월 15일
0

Oracle

목록 보기
1/2
post-thumbnail

집계 함수 및 그룹화

LISTAGG

그룹화된 데이터를 문자열로 결합할 때 사용하는 집계 함수

예시)

SELECT '컬럼 명', LISTAGG('컬럼 명', '구분자') WITHIN GROUP (ORDER BY '컬럼 명') 
	AS '결과'
	FROM '테이블 명'
	GROUP BY '컬럼 명';

WITHIN GROUP

LISTAGG 함수와 함께 사용되며, 그룹화된 데이터를 문자열로 결합할 때 정렬 순서를 지정하는데 사용

PARTITION BY

윈도우 함수와 함께 사용되며, 데이터를 파티션으로 분리하여 각 파티션 내에서 함수를 계산하는데 사용

예시)

SELECT '컬럼 명', '컬럼 명', AVG('컬럼 명') 
	OVER (PARTITION BY '컬럼 명') 
    AS '결과'
	FROM '테이블 명';

계층 구조 쿼리 및 연결

SYS_CONNECT_BY_PATH

계층 구조 쿼리에서 사용되며, 부모-자식 관계의 경로를 문자열로 반환하는 함수

SELECT '컬럼 명', '컬럼 명', SYS_CONNECT_BY_PATH('컬럼 명', '구분자') AS '경로'
FROM '테이블 명'
START WITH '컬럼 명' IS NULL
CONNECT BY PRIOR '컬럼 명' = '컬럼 명';

CONNECT BY PRIOR

계층 구조 쿼리에서 사용되며, 부모-자식 관계를 연결할 때 사용되는 연결 조건

ORDER SIBLINGS BY

계층 구조 쿼리에서 형제 노드의 순서를 지정할 때 사용되는 구문


공통 테이블 표현식

WITH

공통 테이블 표현식 (CTE)을 정의할 때 사용되며, 하위 쿼리의 결과를 임시 테이블처럼 사용할 수 있음

예시)

WITH cte AS (SELECT '컬럼 명', '컬럼 명' FROM '테이블 명')
SELECT * FROM cte WHERE '컬럼 명' = '값';

데이터 선택 및 필터링

SELECT DISTINCT

중복된 행을 제거하여 결과 집합에서 고유한 값을 선택하는 구문

예시)

SELECT DISTINCT '컬럼 명' FROM '테이블 명';

WHERE 조건

NVL

NVL(’대상 데이터’ , 0)

대상 데이터의 값이 null이면 0을 표시, null이 아니면 대상 데이터 값을 표시

NVL2

NVL2('대상 데이터', 'Y', 'N')

대상 데이터 값이 null이 아니면 Y, null이면 N을 표시

CASE

CASE WHEN (조건) thenWHEN (조건) thenelse 그 외의 값
end
  • 주의점 < 조건문과 조건문 사이에 콤마(,)를 포함하지 않는다 > < CASE문은 반드시 END로 끝난다 >

데이터 형식 변환

출처 - https://wikidocs.net/3936

TO_CHAR

날짜형 혹은 숫자형을 문자형으로 변환하는 함수

SELECT SYSDATE, TO_CHAR(SYSDATE, 'YYYY-MM-DD')
								TO_CHAR(SYSDATE, 'YYYY/MM/DD DAY')
                TO_CHAR(SYSDATE, 'YYYY/MM/DD, HH24:MI:SS')

TO_DATE

문자형을 날짜형으로 변환하는 함수

  • 날짜형은 세기, 연도, 월, 일, 시간, 분, 초와 같은 날짜와 시간에 대한 정보를 저장기본 날짜 형식은 'YY/MM/DD' 형식으로 '년/월/일'을 나타낸다
TO_DATE(20230915,'YYYYMMDD')

=> 23/09/15

TO_NUMBER

문자형을 숫자형으로 변환하는 함수

예) '20,000'과 '10,000'의 차이를 알아보기 위해서 빼기(-)연산을 구하는 쿼리문

SELECT TO_NUMBER('20,000', '99,999')-TO_NUMBER('10,000', '99,999')

=> 10000

'20,000'과 '10,000'은 문자형이기 때문에 산술 연산을 수행하지 못한다

문자형을 숫자형으로 변환한 다음에 연산을 실행해야 한다.

0개의 댓글