본문 바로가기

스파르타코딩클럽(내일배움캠프)

스파르타코딩클럽 내일배움캠프 11주차 후기

728x90

[SQL]

left join 합집합으로 만드는거?

inner join 교집합으로 만드는거?

 

현업에서 inner조인을 많이 사용한다.

1.

SELECT * from users u

left join point_users pu on u.user_id =pu.user_id

왼쪽에 있는내용에 추가한다. 없으면 NULL로 표시

A에 B를 추가하기 때문에 어디가 기준이 되고 어디가 추가 되는지 중요

 

2. 

SELECT * from users u

inner join point_users pu on u.user_id =pu.user_id

공통된 부분만 보인다.

 

3. '오늘의 다짐' 정보에 과목 정보를 연결해 과목별 '오늘의 다짐' 갯수를 세어보자!

(checkins 테이블에 courses 테이블 연결해서 통계치 내보기)

과목별 -> group by

 

SELECT c1.course_id ,c2 .title, COUNT(*) as cnt FROM checkins c1

inner join courses c2 on c1.course_id = c2.course_id

group by c1.course_id

 

 

4. 유저의 포인트 정보가 담긴 테이블에 유저 정보를 연결해서, 많은 포인트를 얻은 순서대로 유저의 데이터를 뽑아보자!(point_users 테이블에 users 테이블 연결해서 순서대로 정렬해보기)

많은 포인트를 얻은 순서-> order by

유저정보 -> users

유저의 포인트가 담긴 테이블 -> point_users

 

select * from point_users p

inner join users u

on p.user_id = u.user_id

order by p.point desc

 

 

 

5. 네이버 이메일 사용하는 유저의 성씨별 주문건수 세어보기(orders 테이블에 users 테이블 연결해서 통계치 내보기)

성씨별 -> ~별 Group by

네이버 이메일 사용하는 유저의 -> Where절

select u.name, count(u.name) as count_name from orders o

inner join users u

on o.user_id = u.user_id

where u.email like '%naver.com'

group by u.name

 

6. Union

모든 필드가 같아야된다는 조건이 필요함!! A랑 B를 합쳐줄수 있다.

A의 order by가 있고 B가 order by 가 있을때 union으로 합친다면 효과없음

서브쿼리를 이용하면 정렬 할수 있음

 

7. 4주차

 

1. subquery

2. with

3. 문자열가공

4. case when ->  조건문

728x90