SQL

SQL(GROUP BY)

yellowtrust 2023. 4. 18. 21:34

◆ GROUP BY 문을 사용하여 데이터 그룹핑("~별로" 표현)

- 실행순서: FROM->WHERE->GROUP BY->SELECT

- 예제

SELECT DEPTNO
	, SUM(SAL)
    , ROUND(AVG(SAL), 2)
   FROM EMP
  GROUP BY DEPTNO;
  
  
SELECT 성별
  	, COUNT(*) AS CNT
    FROM 수강
   WHERE 강의번호 = 1 -- 데이터모델링과SQL
  GROUP BY 성별;

※ GROUP BY 사용시, Select List에는 Group by에 기술된 칼럼 외의 칼럼은 집계함수만 사용가능

 

◆ PRACTICE

1) EMP테이블에서 직업 별로 최고 급여액, 최저 급여액, 총급여액, 평균 급여액을 표시하는 질의 작성

SELECT JOB
	, MAX(SAL) AS SAL_MAX
    , MIN(SAL) AS SAL_MIN
    , SUM(SAL) AS SAL_TOTAL
    , ROUND(AVG(SAL)) AS SAL_AVG
	FROM EMP
   GROUP BY JOB

2) EMP테이블에서 부서별로 사원수, 직업수, 총급여 평균급여를 출력하시오

SELECT DEPTNO
	, COUNT(*) AS DEPT_EMP_CNT
    , COUNT(DISTINCT(JOB)) AS JOB_CNT
    , SUM(SAL) AS TOT_SAL
    , ROUND(AVG(SAL), 2) AS AVG_SAL
	FROM EMP
   GROUP BY DEPTNO

3) EMP테이블에서 직업 별, 입사년도 별로 총 급여액을 표시하는 질의를 작성하시오

SELECT JOB
	, TO_CHAR(HIREDATE, 'YYYY') AS HIRE_YEAR
    , COALESCE(SUM(SAL), 0) AS SAL_TOTAL
	FROM EMP
   GROUP BY JOB, HIRE_YEAR