두 테이블의 공통된 정보 (key값)를 기준으로 테이블을 연결해서 한 테이블처럼 보는 것
left join은 중복된 값도 허용된 모두 펼쳐서 두개를 나란히 보는 조인이라면
inner join은 중복된 값을 허용하지 않고 교집합의 둘다 모두 가지고 있는 데이터만 보는 조인이다.
select을 두번할 것이 아니라 한번에 모아보고 싶은 경우, 필드명이 서로 같은 테이블을 합쳐서 보여준다.
Subquery란? 쿼리 안의 쿼리라는 의미입니다.
하위 쿼리의 결과를 상위 쿼리에서 사용하면, SQL 쿼리가 훨씬 간단해져요!
하위 쿼리에서 특정 조건의 데이터 조회를 사용하고 해당 결과 값을 다시 사용하여 더 세분화된 조회를 할 때 용이 하다. 복잡해진 subquery는 with절로 더 깔끔하게 정리할 수 있다.
ex)
with table1 as (
select course_id, count(distinct(user_id)) as cnt_checkins from checkins
group by course_id
), table2 as (
select course_id, count(*) as cnt_total from orders
group by course_id
)
select c.title,
a.cnt_checkins,
b.cnt_total,
(a.cnt_checkins/b.cnt_total) as ratio
from table1 a inner join table2 b on a.course_id = b.course_id
inner join courses c on a.course_id = c.course_id
SUBSTRING_INDEX: SUBSTRING_INDEX(email, '@', 1) [이메일 로우를 '@'를 기준으로 1번째(왼쪽) 글씨를 보여줘]
SUBSTRING: substring(created_at,1,10) [생성시간 로우의 1번째 글자부터 10번째 글짜까지 잘라서 보여줘]
CASE:
case
when pu.point > 10000 then '잘 하고 있어요!'
else '조금 더 달려주세요!'
END as '구분'