WHERE, HAVING, CASE WHEN은 SQL에서 조건을 처리하는 데 사용되지만, 각각의 용도와 사용되는 위치가 다릅니다.
- WHERE:
- 용도: 데이터베이스에서 행을 필터링할 때 사용합니다.
- 사용 위치: SELECT 문, UPDATE, DELETE 등에서 사용할 수 있으며, 집계 함수가 적용되기 전에 조건을 걸 때 사용합니다.
- 예시:
SELECT * FROM 테이블명 WHERE 조건;
- HAVING:
- 용도: 집계 함수의 결과를 필터링할 때 사용합니다. 즉, GROUP BY로 그룹화된 데이터에 대해 조건을 걸 때 사용됩니다.
- 사용 위치: GROUP BY 절 이후에 사용됩니다.
- 예시:
SELECT 컬럼명, COUNT(*) FROM 테이블명 GROUP BY 컬럼명 HAVING COUNT(*) > 1;
- CASE WHEN:
- 용도: 조건에 따라 다른 값을 반환하는 경우 사용합니다. 주로 SELECT 절에서 특정 조건에 따라 값을 변형할 때 사용됩니다.
- 사용 위치: SELECT 문, ORDER BY, WHERE 등 다양한 위치에서 사용할 수 있습니다.
- 예시:
SELECT 컬럼명, CASE WHEN 조건 THEN '값1' ELSE '값2' END AS 새로운컬럼명 FROM 테이블명;
GROUP BY의 기능
GROUP BY는 SQL에서 데이터를 특정 컬럼을 기준으로 그룹화하여 집계 함수를 적용하는 데 사용됩니다. 이를 통해 다음과 같은 작업을 수행할 수 있습니다:
- 데이터 집계: 특정 컬럼의 값에 따라 데이터를 그룹화하고, 각 그룹에 대해 집계 함수(예: SUM, AVG, COUNT 등)를 적용하여 요약된 정보를 제공합니다.
- 데이터 분석: 그룹화된 데이터를 통해 패턴이나 트렌드를 분석할 수 있습니다.
HAVING의 기능
HAVING 절은 GROUP BY로 생성된 그룹에 대해 추가적인 조건을 걸 때 사용됩니다. 이는 집계된 결과에 대한 필터링을 가능하게 하며, WHERE 절과의 차별점은 다음과 같습니다:
- WHERE: 원래의 행을 필터링합니다. 집계 함수는 사용할 수 없습니다.
- HAVING: 집계된 결과를 필터링합니다. 즉, GROUP BY로 그룹화된 데이터에 대해 조건을 걸 수 있습니다.
WITH 문은 SQL에서 공통 테이블 식(Common Table Expression, CTE)을 정의하는 데 사용됩니다. CTE는 쿼리의 일부분을 정의하여 이를 재사용할 수 있게 해주는 구조입니다.
CTE의 주요 특징과 장점
- 가독성 향상: 복잡한 쿼리를 더 이해하기 쉽게 만듭니다. CTE를 사용하면 쿼리를 여러 개의 부분으로 나누어 읽기 쉽게 할 수 있습니다.
- 재사용성: 동일한 CTE를 여러 번 참조할 수 있어, 쿼리의 중복을 줄이고 성능을 향상시킬 수 있습니다.
- 모듈화: 쿼리의 특정 부분을 모듈화하여, 나중에 수정하기 쉽습니다.
예시
아래는 CTE를 사용하는 간단한 예시입니다:
WITH EmployeeCTE AS (
SELECT EmployeeID, FirstName, LastName, DepartmentID
FROM Employees
)
SELECT e.FirstName, e.LastName, d.DepartmentName
FROM EmployeeCTE e
JOIN Departments d ON e.DepartmentID = d.DepartmentID;
설명
- WITH EmployeeCTE AS (...): Employees 테이블에서 선택한 데이터를 기반으로 EmployeeCTE라는 CTE를 정의합니다.
- 그 다음 쿼리에서 EmployeeCTE를 사용하여 Departments 테이블과 조인하여 결과를 가져옵니다.
CTE는 특히 복잡한 쿼리를 작성할 때 코드의 가독성을 높이고, 쿼리를 관리하기 쉽게 만들어 주는 유용한 기능입니다.
'ComputerScience > 데이터베이스' 카테고리의 다른 글
인덱스란 무엇이고 왜 쓰는 걸까? (0) | 2025.01.30 |
---|---|
RDBMS(관계형 데이터베이스 관리 시스템)와 NoSQL( Not only SQL) (0) | 2024.03.13 |