SQL++/N1QL 쿼리

N1QL 창 함수 및 CTE로 더 큰 그림 얻기

은행 거래 내역을 보고 지출 패턴을 이해하려는 개인적인 필요성이든, 영업 활동을 보고 조직의 영업 성과를 개선하려는 것이든, 진정한 인사이트는 거래 수준 데이터를 추가로 집계하고 요약해야만 볼 수 있습니다. 기존 RDBMS는 SQL 집계의 표현력을 통해 이러한 기능을 제공합니다. 창 함수는 ANSI SQL 표준에 추가되어 SQL 구조로 더 복잡한 질문을 표현할 수 있는 기능을 더욱 확장했습니다.

이제 6.5 릴리스에서 Couchbase N1QL은 창 함수 및 공통 테이블 표현식(CTE)을 지원합니다. 개발자는 더 복잡한 비즈니스 사용 사례를 충족하도록 애플리케이션을 확장할 수 있을 뿐만 아니라 데이터 분석가가 Excel에서 추가 후처리를 수행하지 않고도 필요한 답을 얻을 수 있습니다.

이 글에서는 매우 일반적인 비즈니스 질문 두 가지를 해결하기 위해 N1QL 창 기능과 CTE를 활용하는 방법에 대한 몇 가지 예시를 집중적으로 살펴보겠습니다.

고객별 영업 활동 기간

영업 활동 관리 시스템의 첫 번째 예에서는 영업팀이 2019년 1월 동안 고객과 작업한 시간을 보여주는 보고서를 제공하고자 합니다. 쿼리를 두 단계로 나누겠습니다:

1) 영업팀이 고객과 진행한 미팅 목록과 미팅 시간을 가져옵니다. 모든 고객의 총 소요 시간 'total_time_spent'는 전체 결과 집합에 대해 합산을 수행하는 빈 OVER () 절을 사용하여 약속 시간을 합산하여 계산합니다. 고객별 총 소요 시간 'account_time_spent'는 동일한 구문을 사용하지만 PARTITION 절에 'accid'를 사용합니다.

2) 그런 다음 두 지표를 사용하여 팀이 각 고객과 보낸 전체 시간에서 차지하는 비율을 도출합니다.

월별 영업 활동

이 두 번째 예에서는 2018년 한 해 동안 영업 관련 작업 수가 월별로 어떻게 변화했는지 쿼리로 보여줍니다. 이 쿼리는 쿼리의 가독성을 높이기 위해 N1QL CTE 기능을 활용하며, 이전 기간의 작업 수를 얻기 위해 LAG 창 기능도 활용합니다.

  1. 첫 번째 CTE인 'current_period_task'는 달력 월별로 Task 그룹 유형의 모든 활동에 대한 개수를 검색하는 쿼리를 정의합니다.
  2. 두 번째 CTE인 'last_period_task'는 첫 번째 CTE에서 읽으며, 창 함수 LAG를 활용하여 이전 달의 task_count를 반환합니다. LAG 함수가 작동하려면 ORDER BY 절이 중요합니다.
  3. 메인 쿼리는 두 번째 CTE인 'last_period_task'를 읽고 월별 계산을 도출합니다.

 

리소스

6.5의 기능이 마음에 드셨는지, 앞으로 비즈니스에 어떤 도움이 될지 여러분의 의견을 듣고 싶습니다. 댓글을 통해 의견을 공유해 주시거나 포럼.

 

이 문서 공유하기
받은 편지함에서 카우치베이스 블로그 업데이트 받기
이 필드는 필수 입력 사항입니다.

작성자

게시자 Binh Le

Binh Le는 Couchbase 쿼리 서비스의 수석 제품 관리자입니다. Couchbase에 입사하기 전에는 Oracle에서 근무하며 Sales Cloud Analytics 및 CRM OnDemand의 제품 관리 팀을 이끌었습니다. 영국 브라이튼 대학교에서 컴퓨터 공학 학사 학위를 받았습니다.

댓글 남기기

카우치베이스 카펠라를 시작할 준비가 되셨나요?

구축 시작

개발자 포털에서 NoSQL을 살펴보고, 리소스를 찾아보고, 튜토리얼을 시작하세요.

카펠라 무료 사용

클릭 몇 번으로 Couchbase를 직접 체험해 보세요. Capella DBaaS는 가장 쉽고 빠르게 시작할 수 있는 방법입니다.

연락하기

카우치베이스 제품에 대해 자세히 알고 싶으신가요? 저희가 도와드리겠습니다.