JAVA를 잡아라!...
MySQL_매출 현황 : GROUP_CONCAT, COALESCE, IFNULL 본문
상품별로 매출 현황을 보여주는 페이지 (이전에 작성한 내용)
본 글은 최종 쿼리문 ❌❌❌
한글코딩
- 상품별 카테고리 정보를 보여줄 CTE 작성
- 상품별 카테고리 정보를 담고있는 CATEGORYZATION 테이블의 PRODUCT_PK 컬럼으로 그룹화
- 상품별 매출 및 상품 정보를 보여줄 CTE 작성
- 상품 정보 PRODUCT 테이블과 상품별 구매 정보를 담고있는 BUYPRODUCT 테이블을 조인상품별 총 매출 = 상품PK로 그룹화, 상품별 가격과 구매 개수를 구해서 곱하기
- 상품별 구매 개수 = BUYPRODUCT_CNT의 합계
- 상품 PK로 그룹화
- 2개의 CTE 임시 테이블을 PRODUCT_PK로 조인해 필요한 컬럼의 데이터를 추출
#1 상품별 카테고리 정보를 보여줄 CTE 작성
#2 상품별 매출 및 상품 정보를 보여줄 CTE 작성
#3 2개의 임시테이블을 PRODUCT_PK로 조인해 필요한 컬럼의 데이터 추출
[ 문자열 합치기_GROUP_CONCAT ]
프로젝트 설계 당시 하나의 상품은 큰 카테고리안에 여러개의 서브 카테고리를 가질 수 있었음
전체 결과값을 가져와서 JAVA로 for문을 돌며 여러개의 서브 카테고리를 붙여도 될 것 같긴했지만,
SELECT 쿼리로 결과값을 합쳐서 하나의 문자열로 주는것이 편할 것으로 생각되어 GROUP_CONCAT 함수를 사용
[ NULL 값 대체 함수_IFNULL, COALESCE ]
▶ IFNULL
- MySQL에서만 가능한 함수
- single argument를 처리할 수 있음
- ex) IFNULL(val, x) : val값이 null이면 x 반환, null이 아니면 val 반환
▶ COALESCE
- SQL 표준 함수 : 다양한 데이터베이스 시스템이서 지원가능
- multiple argument를 처리할 수 있음
- ex) COALESCE(val1, val2, val3, ...) : val1값이 null이면 val2 반환, val2도 null이면 val3 반환
컬럼 비교 대상이 1개라서 COALESCE나 IFNULL이나 성능상 큰 차이가 없을 것으로 보임
따라서, 이번 프로젝트에서는 범용성이 좋은 COALESCE 함수 사용
'팀 프로젝트' 카테고리의 다른 글
API(Application Programming Interface) (0) | 2024.03.29 |
---|---|
최종 프로젝트_관리자_대시보드 (0) | 2024.03.29 |
최종 프로젝트_관리자_매출 관리 (0) | 2024.03.26 |
최종 프로젝트_관리자_상품 관리 (0) | 2024.03.25 |
최종 프로젝트_관리자_회원 관리 (0) | 2024.03.25 |