🖥️ IT, 컴퓨터/🏁 SQL・빅쿼리

[SQL] EXTRACT 란?

김 홍시 2024. 11. 24.
반응형

EXTRACT란?

EXTRACT는 SQL에서 날짜 또는 시간 데이터에서 특정 **부분(컴포넌트)**을 추출하는 데 사용되는 함수입니다. 예를 들어, 날짜에서 연도, 월, 일 등을 추출하거나 시간에서 시, 분, 초를 가져올 수 있습니다.


EXTRACT 기본 구조

EXTRACT(필드 FROM 날짜_컬럼)

주요 구성 요소:

  1. 필드: 날짜/시간에서 추출할 부분(예: 연도, 월, 일 등).
  2. 날짜_컬럼: 날짜 또는 시간 데이터를 포함한 컬럼 또는 값.

지원되는 필드

EXTRACT에서 사용할 수 있는 필드는 데이터베이스 시스템에 따라 다를 수 있지만, 일반적으로 아래와 같은 값이 지원됩니다:

필드 설명 예시 (2024-11-24 14:30:45)

YEAR 연도 2024
MONTH 11
DAY 24
HOUR 14
MINUTE 30
SECOND 45
WEEK 연중 몇 번째 주인지 47
DAY_OF_WEEK 요일 (일요일=1, 월요일=2 등) 시스템마다 다름
DAY_OF_YEAR 연중 몇 번째 날인지 329
QUARTER 분기 4

사용 예제

예제 테이블: 주문

주문ID 주문일시

1 2024-11-24 14:30:45
2 2024-12-01 09:15:00

1. 연도 추출

SELECT 주문ID, EXTRACT(YEAR FROM 주문일시) AS 연도
FROM 주문;

주문ID 연도

1 2024
2 2024

2. 월 추출

SELECT 주문ID, EXTRACT(MONTH FROM 주문일시) AS 월
FROM 주문;

주문ID 월

1 11
2 12

3. 일 추출

SELECT 주문ID, EXTRACT(DAY FROM 주문일시) AS 일
FROM 주문;

주문ID 일

1 24
2 1

4. 시간 추출

SELECT 주문ID, EXTRACT(HOUR FROM 주문일시) AS 시
FROM 주문;

주문ID 시

1 14
2 9

5. 분기 추출

SELECT 주문ID, EXTRACT(QUARTER FROM 주문일시) AS 분기
FROM 주문;

주문ID 분기

1 4
2 4

실전 활용

1. 특정 연도의 데이터 조회

예제: 2024년에 발생한 주문만 조회.

SELECT *
FROM 주문
WHERE EXTRACT(YEAR FROM 주문일시) = 2024;

2. 월별 데이터 집계

예제: 월별로 주문 수 집계.

SELECT 
    EXTRACT(MONTH FROM 주문일시) AS 월, 
    COUNT(*) AS 주문수
FROM 주문
GROUP BY EXTRACT(MONTH FROM 주문일시);

3. 주말 주문 데이터 조회

예제: 요일별로 데이터를 필터링(주말 기준: 토요일=6, 일요일=7).

SELECT *
FROM 주문
WHERE EXTRACT(DAY_OF_WEEK FROM 주문일시) IN (6, 7);

4. 분기별 매출 분석

예제: 분기별 총 매출 계산.

SELECT 
    EXTRACT(QUARTER FROM 주문일시) AS 분기, 
    SUM(매출액) AS 총매출
FROM 주문
GROUP BY EXTRACT(QUARTER FROM 주문일시);

EXTRACT의 장점

  1. 날짜/시간 기반 분석 간소화:
    • 특정 기간, 시간대를 기준으로 데이터를 필터링하거나 그룹화 가능.
  2. 다양한 필드 지원:
    • 연도, 월, 일, 시간뿐만 아니라 분기, 요일, 주 등 다양한 분석 가능.
  3. 가독성:
    • 복잡한 날짜 함수보다 간결하고 이해하기 쉬움.

주의사항

  1. 필드 지원 여부:
    • 일부 데이터베이스에서는 특정 필드(예: DAY_OF_WEEK)가 지원되지 않을 수 있음.
  2. 시간대:
    • 반환 값은 데이터베이스 서버의 시간대 설정을 따름.
  3. 대체 함수:
    • 일부 데이터베이스(MySQL 등)에서는 YEAR, MONTH, DAY 같은 개별 함수도 사용 가능.

관련 함수

  • DATE_PART:
    • PostgreSQL에서 유사한 역할을 수행하는 함수.
    • 예: DATE_PART('month', 주문일시)
  • YEAR(), MONTH(), DAY():
    • MySQL에서 제공하는 대체 함수.

요약

  • **EXTRACT**는 날짜/시간 데이터에서 특정 부분을 추출하는 함수.
  • 주요 활용:
    • 기간 필터링, 그룹화, 시간 기반 데이터 분석.
  • 예제:
    • 연도, 월, 일, 시간, 분기, 주 등 다양한 시간 정보 추출 가능.

EXTRACT는 시간 기반 데이터 처리에서 중요한 역할을 하며, 데이터 분석 작업을 간소화합니다! 😊

반응형

'🖥️ IT, 컴퓨터 > 🏁 SQL・빅쿼리' 카테고리의 다른 글

[SQL] NOW() 함수란?  (0) 2024.11.25
[SQL] CURDATE() 함수란?  (0) 2024.11.24
[SQL] DATEDIFF란?  (0) 2024.11.24
[SQL] DATE_TRUNC이란?  (0) 2024.11.24
[SQL] CTE(Common Table Expressions)란?  (0) 2024.11.24

댓글