반응형
PostgreSQL에서 JSON 데이터를 다루는 방법에 대해 알아보겠습니다.
JSON 데이터는 웹 개발, 모바일 애플리케이션, API 등 다양한 분야에서 사용되고 있으며, 데이터 저장 및 전송에 효율적인 형태로 널리 알려져 있습니다.
아래 쿼리를 사용하여 직원과 부서 정보가 저장된 예시 테이블을 생성하겠습니다.
CREATE TABLE employee_department (
emp_id SERIAL PRIMARY KEY,
dept_id INT,
office_location JSON
);
INSERT INTO employee_department (emp_id, dept_id, office_location)
VALUES (1, 10, '{"locations": [{"country": "KR", "city": "서울", "full_time": true, "part_time": false}, {"country": "US", "city": "New York", "full_time": true, "part_time": false}]}'),
(2, 20, '{"locations": [{"country": "JP", "city": "도쿄", "full_time": false, "part_time": true}, {"country": "UK", "city": "London", "full_time": true, "part_time": true}]}'),
(3, 30, '{"locations": [{"country": "FR", "city": "Paris", "full_time": true, "part_time": false}, {"country": "CA", "city": "Toronto", "full_time": false, "part_time": true}]}'),
(4, 40, '{"locations": [{"country": "AU", "city": "Sydney", "full_time": true, "part_time": true}, {"country": "DE", "city": "Berlin", "full_time": true, "part_time": false}]}');
이 테이블에는 직원 ID, 부서 ID, 그리고 각 직원이 근무하는 지역 정보가 JSON 형태로 저장됩니다.
JSON 데이터를 처리하는 쿼리를 작성해 보겠습니다.
PostgreSQL에서는 'json_array_elements' 함수를 사용하여 JSON 배열의 각 요소를 처리할 수 있습니다.
SELECT
e.emp_id,
e.dept_id,
(l->>'country')::text as country,
(l->>'city')::text as city,
(l->>'full_time')::boolean as full_time,
(l->>'part_time')::boolean as part_time
FROM
employee_department as e
CROSS JOIN
json_array_elements(e.office_location->'locations') as l;
위 쿼리에서는 json_array_elements 함수를 사용하여 JSON 배열의 요소를 추출합니다.
그리고 ->> 연산자를 사용하여 JSON 객체의 특정 키 값을 추출하며, 적절한 데이터 타입으로 변환합니다.
결과는 아래와 같습니다.
실제 프로젝트에서는 더 복잡한 JSON 데이터 구조를 마주할 수 있으며, 이를 처리하기 위해 추가적인 함수와 연산자를 사용해야 할 수도 있습니다.
반응형
'Skills > SQL' 카테고리의 다른 글
이번 달과 지난 달에 속한 쿠폰 슬롯 수 분석하기 (0) | 2023.03.28 |
---|---|
SQL 활용 쿠폰 프로모션 효과 분석: 전체 주문 대비 쿠폰 사용률 살펴보기 (0) | 2023.03.27 |
[Presto SQL] 가격 범위 별 Item 개수 확인 (0) | 2023.03.25 |
최소 구매 금액 미 충족 후, 구매 전환한 사용자 수 구하기 (0) | 2023.03.20 |
SQL order by 특정 조건으로 정렬하기 (2) | 2023.03.18 |