상식닷컴
로그인
가입하기
2026년 상식닷컴 선정 식당 & 카페 리스트
2025년 2026년 신상 호텔 리스트
최근에 오픈한 호텔을 찾는다면 살펴보세요
일주일 식단표 어플
자동 일주일 식단표 어플
안드로이드
아이폰
주식 & 코인 차트의 신
1000만원으로 2000만원 만들기 프로젝트
수정하기 - SQLite에서 WITH 절은 어떻게 사용하나요?
닉네임
비밀번호
제목
내용
[이미지 업로드는 권한이 있는 사람만 가능. 하단 카톡으로 연락]
SQLite에서 `WITH` 절은 공통 테이블 표현식(Common Table Expression, CTE)을 정의하는 데 사용됩니다. CTE는 쿼리 내에서 재사용할 수 있는 임시 결과 집합을 생성하는 방법으로, 복잡한 쿼리를 더 간결하고 읽기 쉽게 만들어 줍니다. `WITH` 절은 주로 서브쿼리의 복잡성을 줄이고, 쿼리의 가독성을 높이며, 여러 번 사용되는 서브쿼리를 한 번만 정의하여 성능을 개선하는 데 유용합니다. <a href='https://sangseek.com/sangseeks/기본 구문/ko'>기본 구문</a> `WITH` 절의 기본 구문은 다음과 같습니다: ```sql WITH cte_name AS ( -- CTE 정의를 위한 쿼리 SELECT column1, column2 FROM table_name WHERE condition ) SELECT * FROM cte_name; ``` 예제 다음은 `WITH` 절을 사용하여 직원의 평균 급여를 계산하고, 이를 기반으로 급여가 평균 이상인 직원 목록을 조회하는 예제입니다. ```sql WITH AverageSalary AS ( SELECT AVG(salary) AS avg_salary FROM employees ) SELECT e.name, e.salary FROM employees e, AverageSalary a WHERE e.salary > a.avg_salary; ``` 이 예제에서 `AverageSalary`라는 CTE를 정의하여 `employees` 테이블의 평균 급여를 계산합니다. 이후 메인 쿼리에서는 이 CTE를 사용하여 평균 급여보다 높은 급여를 받는 직원의 이름과 급여를 조회합니다. 여러 CTE 사용하기 `WITH` 절에서는 여러 개의 CTE를 정의할 수 있습니다. 각 CTE는 쉼표로 <a href='https://sangseek.com/sangseeks/구분/ko'>구분</a>됩니다. 다음은 두 개의 CTE를 사용하는 예제입니다. ```sql WITH DepartmentCount AS ( SELECT department_id, COUNT(*) AS employee_count FROM employees GROUP BY department_id ), HighSalaryEmployees AS ( SELECT name, salary, department_id FROM employees WHERE salary > 100000 ) SELECT d.department_id, d.employee_count, h.name, h.salary FROM DepartmentCount d JOIN HighSalaryEmployees h ON d.department_id = h.department_id; ``` 이 예제에서는 `DepartmentCount` CTE를 사용하여 각 부서의 직원 수를 계산하고, `HighSalaryEmployees` CTE를 사용하여 급여가 100,000 이상인 직원 목록을 가져옵니다. 마지막으로 두 CTE를 조인하여 부서 ID, 직원 수, 직원 이름 및 급여를 조회합니다. 재귀 CTE SQLite는 재귀 CTE도 지원합니다. 재귀 CTE는 자기 자신을 참조하여 반복적으로 데이터를 처리할 수 있는 기능을 제공합니다. 다음은 재귀 CTE의 예입니다. ```sql WITH RECURSIVE EmployeeHierarchy AS ( SELECT id, name, manager_id FROM employees WHERE manager_id IS NULL -- 최<a href='https://sangseek.com/sangseeks/상위 관리/ko'>상위 관리</a>자 선택 UNION ALL SELECT e.id, e.name, e.manager_id FROM employees e JOIN EmployeeHierarchy eh ON e.manager_id = eh.id ) SELECT * FROM EmployeeHierarchy; ``` 이 예제에서는 `EmployeeHierarchy`라는 재귀 CTE를 정의하여 최상위 관리자부터 시작하여 모든 직원의 계층 구조를 조회합니다. 첫 번째 쿼리는 최상위 관리자를 선택하고, 두 번째 쿼리는 현재 CTE의 결과를 사용하여 하위 직원을 찾습니다. 결론 SQLite에서 `WITH` 절은 쿼리의 가독성을 높이고 복잡한 쿼리를 단순화하는 데 매우 유용한 도구입니다. CTE를 사용하면 쿼리의 구조를 명확하게 하고, 여러 번 사용되는 서브쿼리를 효율적으로 관리할 수 있습니다. 또한 재귀 CTE를 통해 계층적 데이터를 처리하는 데도 유용합니다. 이러한 기능들은 데이터베이스 쿼리를 작성할 때 매우 강력한 도구가 될 수 있습니다.
이용안내
커뮤니티 이용안내
×
- 게시한 게시글로 발생하는 문제는 게시자에게 책임이 있습니다.
- 게시글이 타인/타업체의 저작권을 침해할 경우 모든 책임은 게시자에게 있습니다. 게시자가 모든 손해를 부담해야 합니다.
- 상식닷컴 운영자는 게시자와 상의하지 않고 게시글을 수정 또는 삭제할 수 있습니다.
- 상식닷컴 운영자는 깨끗한 커뮤니티 공간을 만드는 것이 1순위입니다.
수정하기
취소하기