LuckyTemplates 사용자를 위한 일반적인 SQL 테이블 식

이 블로그에서는 CTE 라고도 하는 몇 가지 일반적인 테이블 식에 대해 설명합니다 . 복잡한 문제가 발생하면 이러한 SQL 테이블 표현식을 사용하면 도움이 될 수 있습니다.

CTE를 사용하면 복잡한 문제를 해결하기 위해 모든 작업을 작고 관리 가능한 쿼리로 나눌 수 있습니다.

이제 CTE가 코드 문제 해결 작업을 보다 효율적으로 만드는 방법을 살펴보겠습니다 .

목차

공통 SQL 테이블 표현식 작성을 위한 구문 

먼저 " WITH " 다음에 CTE 표현식 이름 , " AS "를 입력해야 합니다 .

LuckyTemplates 사용자를 위한 일반적인 SQL 테이블 식

그런 다음 괄호 사이에 쿼리를 제공할 수 있습니다. 이것은 가상 테이블로 작동할 제공된 표현식 이름에 저장됩니다.

LuckyTemplates 사용자를 위한 일반적인 SQL 테이블 식

그런 다음 설정한 Expression 이름을 통해 생성한 가상 테이블을 사용하여 SELECT 문을 추가합니다.

LuckyTemplates 사용자를 위한 일반적인 SQL 테이블 식

이 예에서는 식 이름 에 " USACusts "를 사용합니다 .

LuckyTemplates 사용자를 위한 일반적인 SQL 테이블 식

쿼리에는 이 코드를 사용합니다. 

LuckyTemplates 사용자를 위한 일반적인 SQL 테이블 식

이 쿼리는 가상 테이블을 생성합니다. 고객이 속한 국가가 ' 미국 '인 경우 고객 ID별로 그룹화된 총 금액 또는 집계 금액이 표시됩니다. 데이터는 Sales.Customers 테이블 에서 추출됩니다 .

custidAgg_Amount 의 두 열이 표시됩니다 . USACusts 테이블은 물리적 테이블이 아니라 가상 테이블일 뿐입니다. 즉, 데이터베이스에 표시되지 않습니다.

쿼리 후에 SELECT 문을 추가할 수 있습니다 .

LuckyTemplates 사용자를 위한 일반적인 SQL 테이블 식

이 문은 USACusts 테이블 에서 1000 보다 큰 모든 Agg_Amount를 선택합니다 .

다중 공통 SQL 테이블 표현식 

여러 CTE는 코드의 복잡한 오류를 더 작은 청크로 나누어 해결하는 데 도움이 될 수 있습니다. 또한 CTE를 원하는 만큼 정의할 수 있습니다. 다음은 여러 CTE 의 예입니다 .

LuckyTemplates 사용자를 위한 일반적인 SQL 테이블 식

이 예에서는 C1 인 첫 번째 CTE가 있습니다 . 여기에서 YEAR(orderdate)를 선택 하고 Sales.Orders 테이블 에서 orderyearcustid 인 2개의 열을 생성했습니다 .

C2 라는 두 번째 CTE 의 경우 orderyear를 선택 하고 COUNT 명령을 사용하여 custid 수를 수집했습니다 . 그런 다음 C1 에서 numcusts 로 이름을 지정했습니다 . 2015 보다 큰 주문 연도 만 선택하기 위해 WHERE 조건 도 C2 에 추가되었습니다 . 그런 다음 주문연도 별로 그룹화했습니다 .

그런 다음 C2 에서 orderyearnumcusts를 선택했습니다 . 그런 다음 WHERE 조건을 추가하여 500 보다 큰 고객 수만 선택했습니다 .

정리하면 이 코드는 orderyear 가 2015년 보다 큰 고객을 선택하고 orderyear 조건 에 따라 500 명 이상의 고객만 선택하는 코드 입니다 .

복잡한 코드를 해결하기 위해 여러 CTE 사용

다음으로, 대규모 데이터 집합의 문제를 해결할 때 CTE 사용을 더욱 강조하기 위해 더 많은 예를 보여드리겠습니다 . 다음은 여러 CTE 의 또 다른 예입니다 .

LuckyTemplates 사용자를 위한 일반적인 SQL 테이블 식

원하는 방식으로 CTE의 이름을 지정할 수 있지만 이 블로그에서는 C1 , C2 , C3 등을 사용하여 예제에서 CTE를 활용하는 방법을 쉽게 식별하고 이해할 수 있습니다.

예제로 돌아가서 Sales.SalesOrderDetails 테이블 에서 주문 수량이 5 보다 큰 판매만 선택하도록 C1을 만들었습니다 .

LuckyTemplates 사용자를 위한 일반적인 SQL 테이블 식

그런 다음 C2 에서 C1 에 저장한 데이터를 활용하여 Product.ID 기반으로 제품을 결합 하고 제품 이름 (p.Name) 및 제품 색상 (p.Color) 별로 그룹화했습니다 .

C1 에서 조건을 선언했으므로 주문 수량 (OrderQty) 이 5 보다 큰 주문에 대해서만 C2 에서 제품 이름과 제품 색상을 그룹화합니다 .

LuckyTemplates 사용자를 위한 일반적인 SQL 테이블 식

그런 다음 주문 수량이 1000 보다 큰 C2에서 모든 데이터를 선택하는 명령을 사용합니다 .

문제 해결을 위해 생성한 각 CTE를 선택하여 올바른 데이터를 표시하는지 확인할 수 있습니다. 아래 예를 참조하십시오.

LuckyTemplates 사용자를 위한 일반적인 SQL 테이블 식

C1 의 경우 주문 수량이 5 보다 큰 Sales.SalesOrderDetail 테이블 의 모든 데이터를 표시합니다 .

LuckyTemplates 사용자를 위한 일반적인 SQL 테이블 식

그런 다음 C2는 C1 의 제품 이름 및 색상별로 그룹화된 주문 수량의 출력을 표시합니다 . C2 에서 orderqty 열을 볼 수 있지만 C1 에서 생성한 계산 열일 뿐이므로 실제로 C2 에는 해당 열이 없습니다 . 여기에서 orderqty 열의 조건을 사용하여 문제 해결을 수행할 수 있습니다.

이제 여러 CTE가 복잡한 코드의 오류를 CTE 에 저장하여 오류를 해결 하고 실제 코드를 손상시키지 않고 문제 해결을 시작하는 데 어떻게 도움이 되는지 확인할 수 있습니다.

Case 문과 함께 CTE 사용

복잡한 코드 문제를 해결하는 데 여러 CTE를 활용하는 방법을 보여주기 위해 동일한 컨텍스트의 또 다른 예를 살펴보겠습니다 . 

이 경우 C2 에서 집계된 orderqty 금액을 기반으로 하는 결과가 포함된 Product Category 열을 생성하는 CASE 문을 사용하겠습니다 .

LuckyTemplates 사용자를 위한 일반적인 SQL 테이블 식

앞서 언급했듯이 첫 번째 CTE제품 범주 에는 orderqty가 없었지만 중간 테이블을 사용하여 다른 계산을 계산하고 수행했습니다.

다음 예에서는 이전 예에서 만든 제품 범주를 기반으로 집계된 금액을 만듭니다 . 그러나 이렇게 하려면 제품 범주 에 대한 CASE 문을 세 번째 CTEC3 에 넣습니다 .

LuckyTemplates 사용자를 위한 일반적인 SQL 테이블 식

계속 진행하기 전에 C3 아래에 " SELECT * FROM C3 "를 추가하여 C3 의 출력을 확인합시다 .

LuckyTemplates 사용자를 위한 일반적인 SQL 테이블 식

C3 에서는 ProductName , Color , orderqtyProduct Category 열을 볼 수 있습니다 . 여기에서 제품 범주를 기준으로 집계를 시작할 수 있습니다 . C3 아래의 다음 명령을 사용하여 이를 수행해 보겠습니다 .

LuckyTemplates 사용자를 위한 일반적인 SQL 테이블 식

아래 예시는 위의 명령어를 이용하여 집계된 금액을 생성한 결과입니다.

LuckyTemplates 사용자를 위한 일반적인 SQL 테이블 식

처음에는 Product Categoryorderqty 열이 없었지만 여러 CTE를 활용하여 이러한 열을 기반으로 샘플 출력을 생성할 수 있습니다 .

이 시점에서 CTE 의 도움으로 코드 작업을 보다 효율적으로 수행 할 수 있다는 것을 알 수 있습니다 .

OFFSET 및 FETCH를 사용하여
IN, NOT IN, LIKE 및 NOT LIKE SQL 데이터 추출을 사용하는 SQL의 LuckyTemplates 사용자 필터에 대한 SQL 임시 테이블 및 뷰

결론

이 자습서에서는 공통 SQL 테이블 식을 만드는 올바른 구문 과 데이터의 작은 부분을 분리하고 지정된 CTE 내부에 저장하여 복잡한 코드 문제를 해결하는 데 여러 CTE를 활용하는 방법을 배웠습니다 .

이를 학습함으로써 이제 코드를 보다 효율적으로 디버깅할 수 있습니다. CTE 에 아무 이름이나 사용할 수 있으며 CTE 를 만들지 않으면 CTE를 사용하거나 호출할 수 없습니다 . CTE 에 익숙해지면 자신을 SQL 의 중간 사용자라고 생각할 수 있습니다 .

이 주제 및 기타 관련 콘텐츠에 대해 더 알고 싶다면 아래 관련 링크 목록을 확인하십시오.

모두 제일 좋다,

하피즈

Leave a Comment

SharePoint의 계산된 열 | 개요

SharePoint의 계산된 열 | 개요

SharePoint에서 계산된 열의 중요성과 목록에서 자동 계산 및 데이터 수집을 수행하는 방법을 알아보세요.

Power Apps에서 변수 만들기: 컬렉션 작업

Power Apps에서 변수 만들기: 컬렉션 작업

컬렉션 변수를 사용하여 Power Apps에서 변수 만드는 방법 및 유용한 팁에 대해 알아보세요.

Microsoft Flow HTTP 트리거 | Power Automate 자습서

Microsoft Flow HTTP 트리거 | Power Automate 자습서

Microsoft Flow HTTP 트리거가 수행할 수 있는 작업과 Microsoft Power Automate의 예를 사용하여 이를 사용하는 방법을 알아보고 이해하십시오!

Power Automate 흐름: 사용법 및 유형 설명

Power Automate 흐름: 사용법 및 유형 설명

Power Automate 흐름 및 용도에 대해 자세히 알아보세요. 다양한 작업 및 시나리오에 사용할 수 있는 다양한 유형의 흐름에 대해 설명합니다.

흐름에서 Power Automate 종료 작업 제어

흐름에서 Power Automate 종료 작업 제어

조건이 충족되지 않는 경우 흐름에서 작업을 종료하는 Power Automate 종료 작업 컨트롤을 올바르게 사용하는 방법을 알아봅니다.

PowerApps 시작 기능: 앱에서 다른 서비스를 시작하는 방법

PowerApps 시작 기능: 앱에서 다른 서비스를 시작하는 방법

PowerApps 실행 기능에 대해 자세히 알아보고 자신의 앱에서 바로 웹사이트, 전화, 이메일 및 기타 앱과 같은 기타 서비스를 실행하십시오.

Power Automate의 HTTP 요청 – 소개

Power Automate의 HTTP 요청 – 소개

타사 애플리케이션 통합과 관련하여 Power Automate의 HTTP 요청이 작동하는 방식을 배우고 이해합니다.

Power Automate Desktop: 마우스 클릭 보내기 기능을 사용하는 방법

Power Automate Desktop: 마우스 클릭 보내기 기능을 사용하는 방법

Power Automate Desktop에서 Send Mouse Click을 사용하는 방법을 알아보고 이것이 어떤 이점을 제공하고 흐름 성능을 개선하는지 알아보십시오.

PowerApps 변수: 컨텍스트 및 전역 변수 식별

PowerApps 변수: 컨텍스트 및 전역 변수 식별

PowerApps 변수의 작동 방식, 다양한 종류, 각 변수가 앱에 기여할 수 있는 사항을 알아보세요.

Power Automate에서 실행할 데스크톱 흐름 예약

Power Automate에서 실행할 데스크톱 흐름 예약

이 자습서에서는 Power Automate를 사용하여 웹 또는 데스크톱에서 작업을 자동화하는 방법을 알려줍니다. 데스크톱 흐름 예약에 대한 포괄적인 가이드를 제공합니다.