목차
GROUP BY 구문
HAVING
IF/CASE
JOIN
1. HAVING 구문
HAVING 절만 단독으로 사용할 수 없다!
위치는 GROUP BY 절 뒤에 와야한다.
GROUP BY 이후 그룹화 된 테이블에 조건을 적용한다.
* ORDER BY는 무조건 맨 뒤라 ORDER BY 보단 앞에 온다.
이런 식으로 사용하여야한다.
products 테이블에서 productline을 groupby 한 후 productline 이 'planes' 인것만 가져온다.
* 실습 할 때 GROUP BY 절 먼저 실행 해 보고 HAVING 절 실행 하며 공부하기

문제2번은 좀 헷갈렸다.
연도별 총 주문량을 가져 와야하는데 orderdetails 테이블엔 연도가 없는것이다 ..!

일단 해봤다. HAVING 절 까지 가지 않아도 답은 같게 나오더라 제품 코드가 연도별로 나누어져 있나보다 ..
자료숙지를 해야한다.
2. IF / CASE 구문
말그대로 IF 만약이다! condition이 참이라면 large 를 출력하고 거짓이라면 small 출력하는 것이다.
IF(condition, value_if_true, value_if_false)
IF문은 SELECT 절에 사용된다 !!
CASE 문은 여러 조건을 테스트 하고 여러 결과중 하나를 반환한다!
크게 보면 SELECT와 FROM이 있는것이다.
SELECT 절 안에 하나의 컬럼을 CASE 구문으로 썻다고 생각하면 된다.
buyprice 가 20보다 작으면 cheap 20과 50사이라면 moderate 모두 아니라면 expensive를 출력한다!
if는 참 거짓만 출력할 수 있다면 case는 여러 조건을 반환 할 수 있다.

문제6번 처음 했을땐 틀렸다. 테이블에도 ''를 써서 틀린건가? 했는데 case 옆에 jobtitle를 빼먹었다 .
4. JOIN 구문
GROUP BY 다음으로 중요한 구문이다!
하나의 테이블에서만 데이터를 가져오는게 아니라 여러 테이블에서 데이터를 가져올 수 있다.
각각의 테이블에서 존재하는 여러 KEY를 연결시켜서 조회를 하는 것이 JOIN이다.
A테이블과 B테이블의 관계를 통해서 JOIN 시키는것이다.
위와 같은 테이블에서 id 가 key인것이다.
1) INNER JOIN
ex3 테이블이 주인공이고 ex3테이블을 ex4 테이블과 조인한다.
ON뒤가 조건
ex3의 id와 ex4의 id와 조인한다. 겹치는게 1밖에 없어 1만 가져온것이다.
2) LEFT JOIN /
주인공이
왼쪽! (id,name,age)에 ex4가 와서 붙는것으로 생각하면 쉽다.
id 2,3에는 ex4 테이블에 값이 없기 때문에 NULL값으로 나타난다.
where ex.4 id IS null
ex4의 테이블이 null인 것만 출력하는 조건
3) RIGHT JOIN
오른쪽 ex.4에 있는게 가만히 있고 ex.3 왼쪽에 있는게 와서 붙는것이다.
4) UNION
UNION은 두 테이블의 데이터를 세로로 쭉 나열하는 역할이다.
* column 수가 같아야 하며 중복은 제거한다.
5) FULL OUTER JOIN
mysql에선 FULL OUTER JOIN을 지원하지 않기 때문에 위와 같은 쿼리를 만들어줘야한다.
JOIN 부분 문제를 풀며 그림이 그려지지 않아 골머리 앓았던게 기억이 난다.
직접 해보니 별거 없다!
머릿속에 그림이 그려지니 문제풀기가 훨씬 수월하다 .
오늘 문제들도 무리없이 풀어냈다!!
https://mcode.co.kr/mypage/lecture_view?wm_id=17116&lecture_id=24&lecture_sub=146&lecture_num=4
'SQL' 카테고리의 다른 글
[SQL입문] 메타코드 강의 후기_ 제5과목-서브쿼리 (0) | 2024.04.29 |
---|---|
[SQL입문] 메타코드 강의 후기_ 제4과목-WINDOW (1) | 2024.04.28 |
[SQL입문] 메타코드 강의 후기_제 2과목- 비교연산 (0) | 2024.04.23 |
[SQL입문] 메타코드 강의 후기_제1과목-Datatype:문자형/숫자형/날짜형 (1) | 2024.04.14 |
[SQL 입문] 메타코드 강의 후기 _오리엔테이션 (0) | 2024.04.12 |