4 - 1 3주차 복습 & 4주차 안내
- 문자 변경 : replace, substring, concat
- 조건문 : if, case when end
4 - 2 Subquery
- 여러 번의 연산을 수행하거나, 조건문에 연산 결과를 사용하거나, 조건에 Query 결과를 사용할 때 쓸 수 있다.
4 - 3 실습
- subquery 속에도 subquery 작성 가능. 볼 때는 가장 가운데 괄호부터!
- 특정 구문을 실행한 결과를 보고 싶을 때는 해당 구문을 드래그 후 실행하면 됨
- 괄호 안에서 이루어진 연산 결과를 괄호 밖에서 활용 가능
4 - 4 실습
- distinct 활용하기
- 범주 계산할 때 group by 꼭 챙기기
- subquery 닫을 때 ) 뒤에 이름 지정하기
4 - 5 Join
- left join은 하나의 테이블에 값이 없어도 모두 조회 가능하나, inner join은 두 테이블 모두 값이 있는 부분만 조회
- 공통 컬럼은 묶어주기 위한 '공통값'. 따라서 두 테이블의 컬럼명을 달라도 OK.
4 - 6 실습
- where 절은 동일하게 select from문 다음에 적어준다.
- 중복 없이 값을 조회하려면 distinct를 앞에 붙여준다.(select문에서 컬럼명 앞에)
4 - 7 Join으로 두 테이블의 값 연산
- 각각 다른 테이블이지만 select문에서 연산 가능.
4주차 숙제
SELECT restaurant_name,
CASE when price<=5000 then 'price_group1'
when price>5000 and price<=10000 then 'price_group2'
when price>10000 and price<=30000 then 'price_group3'
when price>30000 then 'price_group4' end price_group,
CASE when age<30 then 'age_group1'
when age>=30 and age<40 then 'age_group2'
when age>=40 and age<50 then 'age_group3'
when age>=50 then 'age_group4' end age_group
FROM
(
SELECT f.restaurant_name,
AVG(f.price) price,
AVG(c.age) age
FROM food_orders f inner join customers c on f.customer_id=c.customer_id
group by 1
) a
order by 1
5 - 1 4주차 복습 & 5주차 안내
- subquery : Query 결과를 Query에 다시 활용하는 것
- join : 두 개 이상의 테이블을 결합하여 사용하는 것(left join, inner join)
5 - 2 조회한 데이터에 아무 값이 없을 때
- 테이블에 잘못된 값이 들어있거나, join을 했을 때 값이 없는 경우에는 2가지 방법으로 해결 가능
1) 없는 값이나 잘못된 값 제외하기 : null
2) 다른 값을 대신 사용하기 : coalesce(원래 계산할 컬럼, 대체할 값)
SQL 문제(코드카타)
- 자동차 종류 별 특정 옵션이 포함된 자동차 수 구하기
SELECT CAR_TYPE, COUNT(*) CARS
FROM CAR_RENTAL_COMPANY_CAR
WHERE OPTIONS LIKE '%통풍시트%' OR OPTIONS LIKE '%열선시트%' OR OPTIONS LIKE '%가죽시트%'
GROUP BY CAR_TYPE
ORDER BY CAR_TYPE
*
* 노트 필기