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