programing

YY-MM에 의해 주문된 영업 담당자, 영업 담당자의 상태 및 해당 영업 담당자의 상태에 대한 총 매출이 포함된 SQL 보고서

iphone6s 2023. 9. 4. 19:38
반응형

YY-MM에 의해 주문된 영업 담당자, 영업 담당자의 상태 및 해당 영업 담당자의 상태에 대한 총 매출이 포함된 SQL 보고서

상황이.저는 영업 담당자 이름(모두 50개), 영업 담당자의 상태 및 해당 상태에 대한 YYY-MM별 총 매출을 나열한 보고서를 작성하려고 합니다.주에 두 명 이상의 영업 담당자가 있는 경우, 각 영업 담당자는 해당 주에 대해 동일한 정보와 함께 나열되어야 합니다.모든 정보가 포함되어 있는 한 최종 목록이 어떻게 주문되는지는 중요하지 않습니다.

문제가.저는 제가 가지고 있는 총계 외에 주별 총계도 필요합니다.

내 코드는 다음과 같습니다.

 SELECT
    dim_sales_rep.sales_rep_name as 'Sales Rep',
    dim_state.abbreviation as 'State',
    date_format(dim_date.date, '%Y-%m') as 'Year-Month',
    concat('$',sum(fact_sales.total_sales)) as 'Sales'
FROM
    (
        (
            dim_sales_rep
        JOIN dim_state ON dim_sales_rep.state_key = dim_state.state_key
        )
    JOIN fact_sales ON dim_sales_rep.sales_rep_key = fact_sales.sales_rep_key
    )
JOIN dim_date ON fact_sales.date_key = dim_date.date_key
GROUP BY dim_date.year, dim_date.month, dim_state.abbreviation, dim_sales_rep.sales_rep_name

샘플 출력:

Rep             State       Year-Month      Sales
Michele Harris   GA          2010-08         $679.79
T.S. Eliot       GA          2010-07         $2938.74

다음과 같이 표시되어야 합니다.

Rep             State       Year-Month      Sales
Michele Harris   GA          2010-08         $679.79
Georgiana Woe    GA          2010-08         $482.98
State total                                  $1162.77

이런 식으로.

Rep             State      Year-Month      YM Total      State Total
Michaele Harris GA         2010-08         $679.79       $1162.77
Georgiana Woe   GA         2010-08         $482.98       $1162.77

데이터 구조는 다음과 같습니다.

표 사실_판매

date_key(PK) 대리 키

계정_키(PK) 대리 키

sales_rep_key(PK) 대리 키

total_sal 총 판매 금액입니다.

count_of_products 판매된 제품 수

테이블 dim_state

state_key(PK) 대리 키

축약어.AL 또는 CA

이름을 대라.캘리포니아

탁상 계정

계정_키(PK) 대리 키

계정_이름

계정_주소

state_key 대리 키

active_date 이 레코드가 활성화되는 시작 날짜

expiration_date 이 레코드가 활성화된 종료 날짜

is_current 활성 레코드를 나타냅니다.

테이블 dim_sales_rep

sales_rep_key(PK) 대리 키

sales_rep_name

state_key 대리 키

active_date 이 레코드가 활성화되는 시작 날짜

expiration_date 이 레코드가 활성화된 종료 날짜

is_current 활성 레코드를 나타냅니다.

테이블 dim_date

date_key (PK) 대리 키 날짜(예: 2011-01-01)

월 예: 01

예: 2011년

주의:

PK: 열이 기본 키이거나 테이블의 기본 키의 일부임을 나타냅니다.

대리 키는 숫자로 표시되며 응용 프로그램의 실제 값을 나타내지 않습니다.예를 들어 date_key는 1,2,3,4 등일 수 있으며 실제 날짜가 아닙니다.

dim_date에 모든 시간에 대한 모든 날짜가 포함되어 있다고 가정합니다.

다른 표에서 열 이름이 같은 경우에는 동일하다고 가정합니다.

상태만 기준으로 그룹화하면 결과 집합에 상태당 행이 하나씩 표시됩니다. 그거야.GROUP BY평균: 언급된 열 값을 기준으로 데이터를 집계합니다.

사용:

GROUP BY dim_date.year, dim_date.month, dim_state.abbreviation, dim_sales_rep.sales_rep_name WITH ROLLUP

그리고 MySQL의 날짜 기능을 사용하여 날짜를 잘 포맷할 수 있습니다.

사용해 보십시오.

SELECT DATE_FORMAT(STR_TO_DATE(CONCAT_WS('-',2014,3,1),'%Y-%m-%e'),'%Y-%m')

언급URL : https://stackoverflow.com/questions/51348863/sql-report-that-includes-sales-rep-sales-reps-state-and-the-total-sales-for-t

반응형