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
'programing' 카테고리의 다른 글
| MariaDB datetime 자동 업데이트 버그 (0) | 2023.09.04 |
|---|---|
| 무엇을 합니까?PowerShell에서 평균? (0) | 2023.09.04 |
| Windows(MySQLDB 사용)에서 Python 일반 텍스트 플러그인 인증을 받으려면 어떻게 해야 합니까? (0) | 2023.09.04 |
| c#에 대한 Oracle mysqld.data.dll과 MariaDB mysq.data.dll의 차이점은 무엇입니까? (0) | 2023.09.04 |
| 단어 그룹이 먼저 발생하는 경우 데이터에서 특정 식 제외 (0) | 2023.09.04 |