하위 쿼리
적용 대상:Microsoft Fabric의 Microsoft FabricWarehouse에 있는 Azure Synapse AnalyticsAnalytics Platform System(PDW) SQL 분석 엔드포인트
이 항목에서는 Azure Synapse Analytics, PDW(Analytics Platform System) 또는 Microsoft Fabric에서 하위 쿼리를 사용하는 예제를 제공합니다.
SELECT 문의 경우 SELECT(Transact-SQL)를 참조하세요.
콘텐츠
기본 사항
하위 쿼리가
하위 쿼리는 SELECT, INSERT, UPDATE 또는 DELETE 문 내부 또는 다른 하위 쿼리 내에 중첩된 쿼리입니다. 또한 내부 쿼리 또는 내부 선택이 호출됩니다.
외부 쿼리
하위 쿼리를 포함하는 문입니다. 이를 외부 선택이라고도합니다.
상호 관련된 하위 쿼리
외부 쿼리의 테이블을 참조하는 하위 쿼리입니다.
예: Azure Synapse Analytics 및 분석 플랫폼 시스템(PDW)
이 섹션에서는 Azure Synapse Analytics 또는 PDW(Analytics Platform System)에서 지원되는 하위 쿼리의 예를 제공합니다.
A. 하위 쿼리에서 TOP 및 ORDER BY
SELECT * FROM tblA
WHERE col1 IN
(SELECT TOP 100 col1 FROM tblB ORDER BY col1);
B. 상관 관계가 지정된 하위 쿼리가 있는 HAVING 절
SELECT dm.EmployeeKey, dm.FirstName, dm.LastName
FROM DimEmployee AS dm
GROUP BY dm.EmployeeKey, dm.FirstName, dm.LastName
HAVING 5000 <=
(SELECT sum(OrderQuantity)
FROM FactResellerSales AS frs
WHERE dm.EmployeeKey = frs.EmployeeKey)
ORDER BY EmployeeKey;
C. 분석과 상호 관련된 하위 쿼리
SELECT * FROM ReplA AS A
WHERE A.ID IN
(SELECT sum(B.ID2) OVER() FROM ReplB AS B WHERE A.ID2 = B.ID);
D. 하위 쿼리의 상호 관련된 공용 구조체 문
SELECT * FROM RA
WHERE EXISTS
(SELECT 1 FROM RB WHERE RB.b1 = RA.a1
UNION ALL SELECT 1 FROM RC);
E. 하위 쿼리의 조인 조건자
SELECT * FROM RA INNER JOIN RB
ON RA.a1 = (SELECT COUNT(*) FROM RC);
F. 하위 쿼리의 상관 관계 조인 조건자
SELECT * FROM RA
WHERE RA.a2 IN
(SELECT 1 FROM RB INNER JOIN RC ON RA.a1=RB.b1+RC.c1);
G. 데이터 원본으로 상호 연결된 하위 선택
SELECT * FROM RA
WHERE 3 = (SELECT COUNT(*)
FROM (SELECT b1 FROM RB WHERE RB.b1 = RA.a1) X);
H. 집계를 사용한 데이터 값의 상호 관련된 하위 쿼리
SELECT Rb.b1, (SELECT RA.a1 FROM RA WHERE RB.b1 = RA.a1) FROM RB GROUP BY RB.b1;
9\. 상관 관계가 있는 하위 쿼리와 함께 IN 사용
다음 예제에서는 상관 관계 또는 반복 하위 쿼리에서 사용합니다 IN
. 이것은 외부 쿼리에 따라 해당 값이 달라지는 쿼리입니다. 내부 쿼리는 외부 쿼리에서 선택할 수 있는 각 행에 대해 한 번 반복적으로 실행됩니다. 이 FactResellerSales
테이블에서 OrderQuantity
가 5
이고 DimEmployee
및 FactResellerSales
테이블에서 직원 ID 번호가 일치하는 각 직원의 EmployeeKey
와 이름 및 성의 인스턴스 하나를 검색합니다.
SELECT DISTINCT dm.EmployeeKey, dm.FirstName, dm.LastName
FROM DimEmployee AS dm
WHERE 5 IN
(SELECT OrderQuantity
FROM FactResellerSales AS frs
WHERE dm.EmployeeKey = frs.EmployeeKey)
ORDER BY EmployeeKey;
J. 하위 쿼리에서 EXISTS 및 IN 사용
다음 예제에서는 키워드(keyword) 사용 EXISTS
과 키워드(keyword) 간의 차이를 보여 주는 의미상 동일한 쿼리를 IN
보여 줍니다. 모두 제품 하위 범주가 Road Bikes
인 각 제품 이름의 인스턴스 하나를 검색하는 하위 쿼리의 예입니다. ProductSubcategoryKey
는 테이블과 테이블 간의 일치 항목 DimProduct
입니다 DimProductSubcategory
.
SELECT DISTINCT EnglishProductName
FROM DimProduct AS dp
WHERE EXISTS
(SELECT *
FROM DimProductSubcategory AS dps
WHERE dp.ProductSubcategoryKey = dps.ProductSubcategoryKey
AND dps.EnglishProductSubcategoryName = 'Road Bikes')
ORDER BY EnglishProductName;
또는
SELECT DISTINCT EnglishProductName
FROM DimProduct AS dp
WHERE dp.ProductSubcategoryKey IN
(SELECT ProductSubcategoryKey
FROM DimProductSubcategory
WHERE EnglishProductSubcategoryName = 'Road Bikes')
ORDER BY EnglishProductName;
11. 여러 상호 관련된 하위 쿼리 사용
다음 예에서는 두 개의 상관 하위 쿼리를 사용하여 특정 제품을 판매한 직원의 이름을 찾습니다.
SELECT DISTINCT LastName, FirstName, e.EmployeeKey
FROM DimEmployee e JOIN FactResellerSales s ON e.EmployeeKey = s.EmployeeKey
WHERE ProductKey IN
(SELECT ProductKey FROM DimProduct WHERE ProductSubcategoryKey IN
(SELECT ProductSubcategoryKey FROM DimProductSubcategory
WHERE EnglishProductSubcategoryName LIKE '%Bikes'))
ORDER BY LastName;
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기