하루에 하나씩 공부하기
[TESTDOME] Regional Sales Comparison 본문
Regional Sales Comparison
Regional Sales Comparison | SQL | TestDome
www.testdome.com
- 유의점
SA.AMOUNT가 NULL일 경우에는 0으로 처리해야함 > CASE WHEN 사용
INNER JOIN 사용하면 매출 없는 지역도 0으로 처리가 안됨 > LEFT JOIN 사용
각 컬럼마다 최대값이랑 평균값 차이 구하기 > 서브쿼리 SELECT MAX(AVG_ALL) FROM AAA 사용
(그냥 MAX(AVG_ALL)하면 컬럼 한개만 반환)
WITH AAA AS(
SELECT R.NAME, R.ID,
CASE WHEN SUM(SA.AMOUNT) IS NOT NULL THEN SUM(SA.AMOUNT)/COUNT(DISTINCT(E.ID)) ELSE 0 END AS AVG_ALL
FROM REGIONS R LEFT JOIN STATES S ON R.ID=S.REGIONID
LEFT JOIN EMPLOYEES E ON S.ID=E.STATEID
LEFT JOIN SALES SA ON E.ID=SA.EMPLOYEEID
GROUP BY R.ID, R.NAME
)
SELECT NAME, AVG_ALL,
(SELECT MAX(AVG_ALL) FROM AAA)-AVG_ALL
FROM AAA;