SQL CASE, 그룹함수, GROUPBY, HAVING 개념정리와 적용예제

Devel/DB_SQL|2020. 7. 22. 15:35
반응형

SQL CASE, 그룹함수, GROUPBY, HAVING 개념정리와 적용예제

 

◆CASE
 
SELECT EMPNO, ENAME, SAL, JOB
CASE JOB WHEN 'ANALYST' THEN SAL*1.1(, 안씀_
                WHEN 'CLERK' THEN SAL *1.2
                ELSE SAL
END "급여"
FROM EMP;
 
 
DECOBE
CASE 문과 다른점. 
THEN, ELSE 없이 위 형식으로 사용한다.
 
예제:
 
 
 
 
 
***컬럼 제목은 ""
데이터베이트에 들어갈 것들은 ''
 
SIGN
=양수(1)인지 음수(-1)인지 0(0)인지 판단.
SIGN(100) = 1 ,SIGN(-100) = -1 
 
+계시판에서 제목과 내용 동시에 검색 할때, 제목 아니면 내용으로 검색.
 
 
◆그룹함수
그룹함수에만 쓸 수 있는 걸 잊지말자!
 
+ DISTINCT DEFAULT 가 ALL임
 
SUM
 
AVG
 
MAX, MIN
+ 날짜 데이터에도 사용 됨.
 
COUNT
=행의 개수 세기
 
 
EX,
 
 
◆GROUP BY
=전체 테이블이 아닌 특정그룹으로 묶을 때 사용한다. ( 예: 부서별, 직급별)
+SELECT 에 들어간 컬럼과 GROUP BY에 들어간 컬럼 둘다 들어가 있어야 함.
 
시행 순서 WHERE-> GROUP-> 필요한 COLUMN 뽑아 온 후 정렬(ORDER BY)
 
+GROUP BY 뒤엔 AILIAS 쓰지 못함. 
ORDER BY 뒤에 숫자 쓰지 못함.
 
**
ERROR WHY?
함수는 단일, 그룹이 있는데, 그룹은 여러개 계산후 하나 값이 나오는데
DEPTNO는 여러 값이 나오는데 AVG는 한개의 값이 나오므로 동시에 사용할 수 없다.
+
 
ERROR WHY?
SELECT 에 들어간 컬럼이 GROUP BY에도 똑같이 들어가 있어야한다.
 
ERROR WHY?
WHERE 절에는 그룹함수가 없 수 없다. 그룹되기 전에 미리 시행되기 때문에 그룹함수를 사용 할 수 없다.
 
 
**그룹함수 팁
:놓침....
 
 
**GROUP BY 에 있는 SELECT에 써줘야 하고, 그룹함수들 쓴다. 
~~ 별로 라는 예제가 나오면  GROUP BY 를 쓴다.
 
EX.
 
COUNT 부서별로 출력됨.
 
 
◆HAVING 절
=GROUP BY에 의해 분류된 그룹을 제한하기 위한 방법.
 
실행 순서
WHERE->GROUP BY->HAVING -> COLUMN->함수->정렬
 
EX.
 
 
EX.
 
 
 
 
 

 

댓글()
loading