06:30 ~ 10:40 SQL 1, 2, 3주차 강의 재수강
11:00 ~ 15:30 병원일정
16:00 ~ 18:00 SQL 4주차 강의 2회 수강
19:00 ~ 19:30 블로그 작성 & 개인회고
19:30 ~ 21:30 SQL 문법 연습문제 풀기
4주차 SQL 기본구조와 문법 연습
오늘 강의의 주제는 Subquery을 활용한 연산과 Join를 활용헤 2개 이상의 테이블에 있는 데이터를 한 번에 조회하며 연산하는 것이다.
SELECT cuisine_type,
total_quantity,
count_res,
CASE WHEN count_res >= 5 and total_quantity >= 30 THEN 0.005
CASE WHEN count_res >= 5 and total_quantity < 30 THEN 0.008
CASE WHEN count_res < 5 and total_quantity >= 30 THEN 0.01
CASE WHEN count_res < 5 and total_quantity < 30 THEN 0.02 end rate
FROM (
SELECT cusine_type,
SUM(quantity) total_quantity,
COUNT(DISTINCT restaurant_name) count_res
FROM food_orders
GROUP BY 1
) a
SELECT column1, special_column
FROM (
SELECT column1, column2 special_column
FROM table1
) a
SELECT column1, column2
FROM table1
WHERE column1 = (SELECT col1 FROM table2)
SELECT *
FROM food_orders LEFT JOIN payments on food_oders.order_id = payments.order_id
-- LEFT JOIN
select 조회 할 컬럼
from 테이블1 a left join 테이블2 b on a.공통컬럼명=b.공통컬럼명
-- INNER JOIN
select 조회 할 컬럼
from 테이블1 a inner join 테이블2 b on a.공통컬럼명=b.공통컬럼명
SELECT column1, column2
FROM table1
WHERE column1 = (SELECT col1 FROM table2)
오늘 주어진 숙제의 주제는 '식당별 평균 주문금액과 주문자의 평균 연령을 기반으로 Segmentation'하는 것이다.
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 BETWEEN 30 AND 39 THEN 'age_group2'
WHEN age BETWEEN 40 AND 49 THEN 'age_group3'
else 'age_group4' END age_group
FROM
(
SELECT a.restaurant_name,
AVG(price) price,
AVG(age) age
FROM food_orders a inner join customers b on a.customer_id = b.customer_id
GROUP BY 1
) a
ORDER BY 1
이해한 상태에서 풀고 싶다는 생각에 강의를 3회전하고서야 풀 수 있었다. 이정도면 머리가 안좋은걸까 하는 생각이 드는 순간이었지만 그래도 해결하고 나니 재미있었다. 이제 어느정도 스케치 정도는 정말 이해가 간다는 생각이 들었지만, 5주차를 듣고 또다시 생각이 달라질지도 모르겠다 ㅎㅎ 그래도 내일은 내일의 해가 뜰테니까 오늘은 목표치 먼저 달성해야겠다!
오늘 수강한 4주차 강의는 조금 많이 어려웠다. 중첩되는 코드를 짜게 된다는 점에서 약간의 겁을 먹은 건지 모르겠지만, 쉽게 기억되지 않아서 기억될 때까지 읽고 실습해보면서 이해해야할 것 같다. 나에게 맞는 납득 방법을 찾아야할지 있는 그대로 받아들이는게 옳은지 파악도 함께 해야겠다는 생각이 들었다.