본문 바로가기
SQL

[SQL입문] 메타코드 강의 후기_ 제3과목-HAVING

by 해봄544 2024. 4. 24.

목차

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