- Today
- Total
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 | 31 |
- swiftUI
- Observable
- cocoapods
- trunc
- 명령어
- delegate
- decode
- 시각화
- scheduledTimer
- Upper
- r
- tapply
- 딥러닝
- Python
- NVL
- grep
- sigmoid
- substr
- struct
- ios
- deeplearning
- Linux
- barplot
- ReLU
- rxswift
- Optional
- SWIFT
- 연산자
- SQL
- MVC
iOS 개발 기록 블로그
SQL Having절 사용 방법과 null 존재하는 데이터 삭제하기 본문
Having 절
having절을 사용하는 이유는 where절에서는 그룹함수로 검색 조건을 줄 수 없습니다.
따라서 having절을 사용해야 합니다.
위치는 group by 다음, order by 전입니다.
예를 들어
> SELECT job, avg(sal)
> FROM emp
> WHERE avg(sal) >= 4000;
> GROUP BY job;
이렇게 쓸 수 없고 아래와 같이 써야 합니다.
> SELECT job, avg(sal)
> FROM emp
> GROUP BY job
> HAVING avg(sal) >= 4000;
>> 실행 순서는 FROM, GROUP BY, HAVING, SELECT 순입니다.
SELECT절의 6가지 절
FROM
WHERE
GROUP BY
HAVING
ORDER BY
>> 이때 HAVING절과 GROUP BY절의 순서에 유의해야 합니다. 오류가 나지는 않지만 데이터가 다르게 조회될 수 있습니다.
예제) 직업, 직업 별 토탈 월급을 출력하는데 직업이 SALESMAN인 사원은 제외하고 출력하고
직업 별 토탈 월급이 5000 이상인 것만 출력하고 직업 별 토탈 월급이 높은 것부터 출력하시오
(토탈 월급을 천단위로 출력되게 하시오)
방법 1.
> Select job, to_char(sum(sal), '999,999')
From emp
Where job <> 'SALESMAN'
Group by job
Having sum(sal) >= 5000
Order by sum(sal) desc;
방법 2.
> Select job, to_char(sum(sal), '999,999')
From emp
Group by job
Having sum(sal) >= 5000 and job <> 'SALESMAN'
Order by sum(sal) desc;
위 두가지 모두 동작하지만 방법 2와 같이 쓰지 않는 것이 좋습니다.
검색 속도(성능) 면에서 떨어지기 때문입니다.
WHERE절에서 일반 검색 조건을,
HAVING절에서 그룹함수를 이용한 검색 조건을 적는 것이 일반적입니다.
예제) 입사한 연도(4자리), 입사한 연도 별 토탈 월급을 출력하시오
> Select to_char(hiredate, 'RRRR'), sum(sal)
From emp
Group by to_char(hiredate, 'RRRR');
설명)
hiredate를 GROUP BY에서 하는 것이 아니라 to_char(hiredate, 'RRRR')를 GROUP BY 해야 합니다.
* null이 있는 데이터를 삭제하는 방법
> DELETE FROM emp
WHERE hiredate is null;
'SQL' 카테고리의 다른 글
SQL 그룹함수 Count 활용하기 (0) | 2022.03.16 |
---|---|
SQL 그룹함수 사용 방법 (max, min, avg...) (0) | 2022.02.15 |
SQL nvl2, decode, case 문법 (0) | 2022.01.06 |
SQL 형 변환 (문자형, 숫자형, 날짜형) (0) | 2021.12.27 |
SQL의 숫자 함수, 날짜 계산 함수 (0) | 2021.12.15 |