SQL 피봇 테이블 (Pivot table)

“피봇 테이블(Pivot Table)“은 특정한 기준에 따라 데이터를 재구조화하여 표현하는 방법을 말합니다. 피봇 테이블은 데이터를 더 직관적으로 이해하고 분석하기 위해 사용됩니다. 예를 들어 원본 데이터가 다음과 같을 때 date product quantity 2022-01-01 A 100 2022-01-01 B 150 2022-01-02 A 120 2022-01-02 B 180 <원본 데이터> 날짜와 제품을 기준으로 재구조화 하여 아래와 같이 피봇 테이블을 만들 수 … Read more

SQL 데이터 전처리 2 : 이상치 제거, 표준화, 정규화

“데이터 전처리“는 원시 데이터를 분석이나 모델링에 활용하기 적합하도록 정제하고 가공하는 과정으로, 결측치 처리, 이상치 제거, 변수 스케일링과 같은 단계를 포함하여 데이터의 품질을 향상시키는 작업을 의미합니다. 이는 정확하고 신뢰성 있는 결과를 얻기 위해 필수적인 단계로 여겨집니다. SQL 데이터 전처리는 2개로 나눠서 정리하고 있습니다. 이번 포스트에서는 2. 이상치 제거, 표준화, 정규화에 대해 정리해보겠습니다. 이상치 제거 이상치를 판단하기 위해서는 … Read more

SQL 데이터 전처리 1 : TRIM, IS NULL, COALESCE

소프트웨어 설계와 DB 모델링을 마치고 데이터를 수집하면 우리가 원하는 스키마에 원하는 데이터 유형으로 데이터를 받을 수 있습니다. 하지만 데이터를 가공하다 보면 원하지 않은 데이터를 변경하거나 제거해야 하는 경우가 반드시 존재합니다. 하물며 우리가 모델링한 DB에서 나온 데이터가 아닌 공개 DB나 어디서인가 데이터를 받았을 때는 절대 우리가 원하는 형태로 데이터가 존재하지 않습니다. 이럴 때, “데이터 전처리” 를 … Read more

SQL 연산자 : ALL, ANY, SOME, IN, EXISTS

ALL, ANY, SOME, IN, EXISTS 는 SQL에서 서브쿼리와 함께 사용되는 연산자 입니다. 주로 비교 연산에서 여러 값을 다룰 때 활용됩니다. 이번 포스트에서는 각 연산자의 사용법에 대해서 간단하게 정리해보았습니다. 연산자 ALL ALL 연산자는 서브쿼리의 모든 행이 조건을 만족할 때 참이 됩니다. 이 예제에서는 your_table의 column2가 another_table의 모든 값보다 큰지를 확인합니다. ALL 연산자의 사용은 MAX 함수 사용과 … Read more

SQL 성능 비교 : 서브쿼리 vs JOIN

서브쿼리 vs JOIN : 서브쿼리와 JOIN 문은 데이터베이스에서 정보를 추출하는 두 가지 주요 방법입니다. 성능 차이는 데이터 양, 인덱스의 존재 여부, 데이터베이스 종류 등에 따라 다를 수 있습니다. 서브쿼리 서브쿼리는 메인 쿼리의 결과에 따라 서브 쿼리가 실행됩니다. 매번 서브쿼리를 실행하므로 데이터베이스 부하가 발생할 수 있습니다. 작은 데이터셋이나 적은 수의 행에 대한 필터링에서는 효과적일 수 있습니다. … Read more

SQL 복잡한 연산 : 서브쿼리

수학 연산에서 순서가 복잡한 연산은 괄호”()”로 묶어서 연산하듯, SQL에서 복잡한 연산을 할 때, “서브쿼리” 를 사용합니다. “서브쿼리”는 구조적으로 다른 SQL 문장 내에 포함된 쿼리를 의미합니다. 서브쿼리 구조 간단한 예로 서브쿼리의 구조를 살펴보겠습니다. 부서별 급여가 평균 금액 이상인 직원 찾는다고 하면 아래와 같은 쿼리를 가집니다. 위의 구조에서 외부 쿼리 (메인 쿼리)는 SELECT employee_id, employee_name, salary, department_id … Read more

DBMS : 옵티마이저

“옵티마이저”는 데이터베이스에서 SQL 쿼리를 실행할 때, 가능한 여러 실행 계획 중에서 최적의 방법을 선택하여 데이터 검색 또는 조작에 대한 성능을 최적화하는 역할을 하는 도구입니다. 쿼리 옵티마이저는 테이블과 인덱스의 통계 정보를 활용하여 비용을 고려하여 최상의 실행 계획을 결정합니다. 옵티마이저 주요 기능 최적의 실행 계획 선택 테이블과 인덱스의 통계 정보를 분석하고, 가능한 다양한 실행 계획을 생성합니다. 그 … Read more

SQL 조건문 : IF, CASE

SQL 조건문

SQL에서는 IF 함수와 CASE 표현식을 사용하여 조건문 을 구현할 수 있습니다. 조건문 사용 시 DBMS에 따라 주의해서 사용하여야 합니다. 조건문 IF IF의 사용법 IF문을 사용한 쿼리 예 orders 테이블의 order_amount가 1000보다 크면 “High” 같거나 낮으면 “Low”로 구분하는 쿼리 입니다. 이중 IF문 사용한 쿼리 예 order_amount가 1000보다 큰 경우 order_category가 ‘High’로 설정됩니다.order_amount가 500~1000 사이인 경우 order_category가 … Read more

SQL로 문자열 다듬기 : REPLACE, SUBSTRING, CONCAT

SQL로 문자열 다듬기 : 데이터를 조회하다 보면 조회 결과를 바로 사용하기 보다 문자열을 다듬어서 결과로 뽑아야 할 때가 있습니다. 예를 들면 아래와 같은 경우인데요. 이런 경우 SQL로 어떻게 문자열을 다듬을 수 있는지 정리하였습니다. 문자열 변경하기 : REPLACE 특정 문자열을 찾아서 다른 문자열로 변경하기 위해서는 REPLACE문을 사용합니다. REPLACE 문의 문법은 다음과 같습니다. ‘REPLACE’ 문은 ‘SELECT’와 사용해서 … Read more

SQL 그룹화 함수 : GROUP BY

카테고리 별로 연산을 하고 싶을 때는 group by 문을 사용하면 됩니다. 이번 포스트에서는 group by를 사용하는 경우와, 사용법, 그룹 조건절에 대해서 간단히 정리해보았습니다. GROUP BY 를 사용하는 경우 WHERE 절만을 사용하여 카테고리 별 연산을 할 수 있습니다. 하지만 이런 쿼리문은 총 쿼리문을 길게 만듭니다. 예를 들어 특정 카테고리의 합계를 구한다고 했을 때, 해당 카테고리의 값이 … Read more