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

자바스크립트 화살표 함수

이번 포스트에서는 자바스크립트 함수 포스트에서 다루지 못했던 화살표 함수 특징에 대해서 정리해 보았습니다 화살표 함수의 선언 방법들 괄호는 생략 가능합니다. 하지만 매개변수가 하나의 단순한 형태의 경우에만 생략이 가능합니다. 화살표 함수의 특징 this, arguments, super에 바인딩 되지 않으므로 메소드로 사용하면 안됩니다. 생성자로 사용하면 안됩니다. new로 호출하면 TypeError를 던집니다. 화살표 함수는 yield 문을 사용할 수 없습니다. 화살표 … Read more

자바스크립트 함수 표현식

이번 포스트에서는 자바스크립트 함수 포스트에서 다루지 못했던 함수 표현식 특징에 대해서 정리해 보았습니다. 함수 표현식 문법 함수 표현식은 다양한 형태로 사용될 수 있습니다. 주의해야 할 점은 function 키워드만 사용하고 이름을 안 넣으면 함수 선언문으로 오해해서 오류가 발생한다는 점입니다. 함수 표현식은 변수에 할당되거나 다른 표현식의 일부로 사용되어야 합니다. 위 코드에서 func1은 함수 표현식으로 인식되어서 함수 이름이 없어도 … Read more

자바스크립트 함수 선언문

이번 포스트에서는 자바스크립트 함수 포스트에서 다루지 못했던 함수 선언문 특징에 대해서 정리해 보았습니다. 함수 선언문의 특징 1 : 호이스팅 함수 선언문은 코드 실행 전에 미리 메모리에 올려지기 때문에 함수를 선언하기 전에 호출할 수 있습니다. 즉, 함수가 코드 어디에서든 호출 가능합니다. 함수 선언문의 특징 2 : 재선언 함수는 var 처럼 다른 function 혹은 var로 재선언 될 … Read more