매출 그래프를 구현하기 위해서 일별, 주별, 월별, 년도별로 매출정보를 가져와야 하는 상황이다.
1. 일별 매출
CREATE VIEW DAILYSALES
AS(
SELECT P.P_PRICE, S.S_QTY,S_DATE
FROM PRODUCT P INNER JOIN SALES S
ON P.P_CODE = S.P_CODE
WHERE S_DATE >= TO_CHAR(SYSDATE-7,'YYYY-MM-DD')
);
SELECT S_DATE AS 날짜, SUM(S_QTY*P_PRICE) AS 일일매출
FROM DAILYSALES
GROUP BY S_DATE
ORDER BY S_DATE;
1.1 view 만들기
- 일단 상품 테이블의 가격, 매출 테이블의 판매수량, 매출테이블의 판매일을 보여주는 view를 만들었다.
- 그리고 조건절로 WHERE S_DATE >= TO_CHAR(SYSDATE-7,'YYYY-MM-DD') 를 사용하여 최근 일주일의 정보를 가져올 수 있게 구현하였다.
1.2 만든 view를 판매일로 group by 하기
- 일별 매출을 보고 싶은 것이니 판매일(S_DATE)컬럼을 group by 하면 된다.
2. 주간 매출
CREATE VIEW WEEKLYSALES
AS(
SELECT P.P_PRICE, S.S_QTY,S_DATE
FROM PRODUCT P INNER JOIN SALES S
ON P.P_CODE = S.P_CODE
WHERE S_DATE >= to_char(add_months(sysdate,-1),'yyyy-mm-dd')--최근 한달
);
SELECT TO_CHAR(S_DATE, 'W')AS 주차 , SUM(S_QTY*P_PRICE) AS 주간 매출
FROM WEEKLYSALES
GROUP BY TO_CHAR(S_DATE, 'W')
ORDER BY TO_CHAR(S_DATE, 'W');
2.1 view 만들기
- 일별매출과 같은 컬럼을 가져왔다.
- 조건절로는 최근 한달의 정보를 가져올 수 있게 where 절을 걸었다.
2.2 만든 view를 판매일로 group by 하기
- 일주일 단위로 group by 해준다.
3. 월별 매출
CREATE VIEW MONTHLYSALES
AS(
SELECT P.P_PRICE, S.S_QTY,S_DATE
FROM PRODUCT P INNER JOIN SALES S
ON P.P_CODE = S.P_CODE
WHERE S_DATE >= to_char(add_months(sysdate,-12),'yyyy-mm-dd')--최근 일년
);
SELECT TO_CHAR(S_DATE, 'YYYYMM')AS 월 , SUM(S_QTY*P_PRICE) AS 월별매출
FROM MONTHLYSALES
GROUP BY TO_CHAR(S_DATE, 'YYYYMM')
ORDER BY TO_CHAR(S_DATE, 'YYYYMM');
3.1 view 만들기
- 일별매출과 같은 컬럼을 가져왔다.
- 조건절로는 최근 1년의 정보를 가져올 수 있게 where 절을 걸었다.
3.2 만든 view를 판매일로 group by 하기
- 한달 단위로 group by 해준다.
4. 최근 10년 매출
CREATE VIEW ANNUALSALES
AS(
SELECT P.P_PRICE, S.S_QTY,S_DATE
FROM PRODUCT P INNER JOIN SALES S
ON P.P_CODE = S.P_CODE
WHERE S_DATE >= to_char(add_months(sysdate,-120),'yyyy-mm-dd')--최근 십년
);
SELECT to_char(S_DATE, 'YYYY')AS 년도 , SUM(S_QTY*P_PRICE) AS 연매출
FROM ANNUALSALES
GROUP BY to_char(S_DATE, 'YYYY')
ORDER BY to_char(S_DATE, 'YYYY');
4.1 view 만들기
- 일별매출과 같은 컬럼을 가져왔다.
- 조건절로는 최근 10년의 정보를 가져올 수 있게 where 절을 걸었다. 12(1년)*10 = 120, SYSDATE(오늘)에서 총 120개월을 빼면 최근 10년 정보를 가져올 수 있다.
3.2 만든 view를 판매일로 group by 하기
- 일년 단위로 group by 해준다.
'SQL' 카테고리의 다른 글
계층형 게시판 만들기/ mysql (0) | 2022.09.07 |
---|---|
MYSQL DATETIME 타입 DEFAULT VALUE를 지금 시간으로 설정하기 (0) | 2022.09.05 |
SQL DEVELOPER 작업속도 느림, 렉 해결 (0) | 2022.03.20 |