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 |