1.

SELECT DEPTNO, SUM(SAL) FROM EMP

WHERE SAL >= 800

GROUP BY DEPTNO

HAVING SUM(SAL) >7000;

 

주의! WHERE절 뒤에는 그룹함수 EX) SUM(SAL), AVG(SAL) 등이 올 수 없음.

 

2.

SELECT DEPTNO, AVG(SAL), SUM(SAL)

FROM EMP

GROUP BY DEPTNO

HAVING DEPTNO = 10; 

HAVING 절GROUP BY에 의해 분류된 그룹들을 제한하기 위한 방법이며 WHERE 처럼 컬럼의 조건을 걸 수 있음. 

 

3. 

SELECT JOB, SUM(SAL) PAYROLL

FROM EMP

WHERE JOB NOT LIKE 'SALE%' --1

GROUP BY JOB --2

HAVING SUM(SAL) > 5000 --3

ORDER BY SUM(SAL) DESC;

ㄴ 여러 조건이 있을 시 우선순위 잘 정해서 입력하기.

 

4.

SELECT

  SUM(CASE JOB WHEN 'CLERK' THEN 1 ELSE 0 END)"CLERK",

  SUM(CASE JOB WHEN 'SALESMAN' THEN 1 ELSE 0 END)"SALESMAN",

  SUM(CASE JOB WHEN 'MANAGER' THEN 1 ELSE 0 END)"MANAGER",

  SUM(CASE JOB WHEN 'ANALYST' THEN 1 ELSE 0 END ) "ANALYST",

  SUM(CASE JOB WHEN 'PRESIDENT' THEN 1 ELSE 0 END ) "PRESIDENT",

  COUNT(*)

FROM EMP

GROUP BY JOB;

 

SELECT COUNT(*) 총인원수,

      SUM(CASE TO_CHAR(HIREDATE,'YY') WHEN '80' THEN 1 ELSE 0 END) "80년도",

      SUM(CASE TO_CHAR(HIREDATE,'YY') WHEN '81' THEN 1 ELSE 0 END) "81년도",

      SUM(CASE TO_CHAR(HIREDATE,'YY') WHEN '82' THEN 1 ELSE 0 END) "82년도",

      SUM(CASE TO_CHAR(HIREDATE,'YY') WHEN '83' THEN 1 ELSE 0 END) "83년도",

      SUM(CASE TO_CHAR(HIREDATE,'YY') WHEN '84' THEN 1 ELSE 0 END) "84년도"

FROM EMP;

GROUP BY HIREDATE;

'DataBase > DQL' 카테고리의 다른 글

6/30 SQL ANSI  (0) 2021.06.30
6/29 SQL 조인  (0) 2021.06.30
6/28 SQL 그룹함수  (0) 2021.06.28
6/28 SQL 조건문  (0) 2021.06.28
6/28 SQL 변환함수 보충  (0) 2021.06.28

+ Recent posts