sql with 예제
y posteado en Sin categoría

SQL WITH 절은 읽기에 적합한 SQL 쿼리를 만들 수 있다는 점에서 간단한 SQL 문보다는 복잡한 SQL 문을 사용하는 데 이상적입니다. 또한 복잡한 SQL 쿼리를 한입 크기의 청크로 세분화하여 복잡한 쿼리를 쉽게 디버깅하고 처리할 수 있습니다. 다음 예제에서는 ProductAssemblyID = 800에 대한 자전거를 빌드하는 데 필요한 제품 어셈블리 및 구성 요소의 계층 구조를 보여 주습니다. 동일한 이름의 기존 테이블이나 뷰를 사용하여 정의된 쿼리 이름입니다.5 기본 기능은 잘 지원됩니다. 제품이 다르게 행동하는 단일 영역은 이름 확인입니다. 특히 재귀로 처리되는 경우가 많다는 점은 주목할 만합니다.6 보다 미묘한 비호환성은 정규화된 테이블 이름과 관련이 있습니다(schema.table은 쿼리를 참조할 수 없음)7 및 쿼리 범위에서 사용되는 뷰(뷰 내부의 쿼리는 “참조” 절로 외부를 “참조”하지 않음).8 WITH 절이 Oracle SQL 내에서 아직 완전히 작동하지 않으며 재귀 쿼리를 수행할 때 CONNECT BY에 대한 WITH 절 대체 사용을 아직 지원하지 않는다는 점에 유의해야 합니다. 간단하게 하기 위해 다음 예제에서는 집계를 한 번만 참조하며, 여기서 SQL WITH 절은 쿼리에서 집계를 여러 번 참조할 때 일반적으로 사용됩니다. 다음은 평균 이상의 매출을 기록한 모든 매장의 이름을 확인하는 요청의 예입니다. 각 매장의 평균 매출과 모든 매장의 평균 매출을 비교해야 합니다. 기본적으로 이 쿼리는 STORE 및 SALES 테이블에 액세스하여 각 저장소의 판매량과 모든 저장소의 평균 매출을 비교합니다. 이 쿼리에 응답하려면 우리는 알고 있어야합니다 :? 모든 매장의 총 판매량입니다.? 매장 수입니다. ? 각 매장의 매출 합계입니다.

단일 SQL 문에서 이 질문에 답하기 위해 인라인 뷰와 HAVING 절 내의 하위 쿼리를 사용해야 합니다. 와? 절?: 보시다시피 SELECT 문과 함께 WITH 절을 사용할 수 있을 뿐만 아니라 INSERT, DELETE, ALTER 및 기본적으로 다른 SQL 문을 사용할 수 있는 다른 문에서도 사용할 수 있습니다. 대부분의 데이터베이스는 뷰를 처리하는 것과 동일한 방식으로 쿼리를 처리합니다. CTE를 실행할 때 CTE를 참조하는 힌트는 CTE가 쿼리의 뷰를 참조하는 힌트와 동일한 방식으로 기본 테이블에 액세스할 때 검색되는 다른 힌트와 충돌할 수 있습니다. 이 경우 쿼리는 오류를 반환합니다. 이것은 매우 우아한 솔루션 (즉, 이해하기 쉬운)이며 실행 시간이 빨라지지만 임시 테이블 대신 SQL-99 WITH 절을 사용할 수도 있습니다. Oracle SQL WITH 절은 집계를 한 번 계산하고 이름을 지정하며 쿼리의 나중에 참조할 수 있도록 합니다. SQL-99 WITH 절은 SQL 문이 SELECT라는 단어로 시작되지 않기 때문에 처음에는 매우 혼란스럽습니다.

대신 WITH 절을 사용하여 SQL 쿼리를 시작하여 집계를 정의한 다음 기본 쿼리에서 “real”인 것처럼 이름을 지정할 수 있습니다. 표: CTE에서 하나 이상의 WITH 절을 지정하는 것은 허용되지 않습니다. 예를 들어 CTE_query_정의에 하위 쿼리가 포함된 경우 해당 하위 쿼리에는 다른 CTE를 정의하는 중첩된 WITH 절이 포함될 수 없습니다. column_name은 공통 테이블 식의 열 이름을 지정합니다. 단일 CTE 정의 내의 중복 이름은 허용되지 않습니다. 지정된 열 이름 수는 CTE_query_정의의 결과 집합에 있는 열 수와 일치해야 합니다. 열 이름 목록은 쿼리 정의에 모든 결과 열에 대한 고유한 이름이 제공되는 경우에만 선택 사항입니다.

Compartir este contenido...
Tweet about this on TwitterShare on FacebookShare on Google+Email this to someone
Los Comentarios están cerrados.