공부일기/엑셀보다 쉬운 SQL

엑셀보다 쉬운 SQL 4주차 개발일지

pipiiiiii 2023. 11. 10. 19:15

SQL의 명령어 익히기

·여러 번의 연산을 한 번의 쿼리문으로 끝내고 싶다면 subquery문을 사용하면 된다. 

 → subquery문은 여러 번의 연산을 수행할 때, 조건문에 연산 결과를 사용할 때, 쿼리 결과를 조건에 사용하고 싶을 때 사용된다. 

 → subquery문은 쿼리안에 서브로 들어가 있는 구문이다. 

ex)

 

· 실습

 - 음식점의 평균 단가별 segmentation을 진행하고, 그룹에 따라 수수료 연산하기

 → 수수료 구간 : ~ 5,000원 미만 0.005%, ~ 20,000원 미만 1%, ~ 30,000원 미만 2%, 30,000원 초과 3%

 → 내 쿼리문 및 수정사항

 

· 실습 

 - 음식점의 지역과 평균 배달 시간으로 segmentation 하기

 → 내 쿼리문 및 수정사항

 

· 실습

 - 음식 타입별 지역별 총 주문 수량과 음식점 수를 연산하고, 주문 수량과 음식점 수 별 수수료율 산정하기 

 → 음식점 수 5개 이상, 주문 수 30개 이상 : 수수료 0.05%

 → 음식점 수 5개 이상, 주문 수 30개 미만 : 수수료 0.08% 

 → 음식점 수 5개 미만, 주문 수 30개 이상 : 수수료 1%

 → 음식점 수 5개 미만, 주문 수 30개 미만 : 수수료 2%

 → 내 쿼리문 및 수정사항

 

· 실습

 - 음식점의 총 주문 수량과 주문 금액을 연산하고, 주문 수량을 기반으로 수수료 할인율 구하기 

 → 수량 5개 이상 = 10%, 수량이 15개 초과 및 총 주문 금액 300,000 이상 = 0.5%, 이 외 일괄 1%

 → 내 쿼리문 및 수정사항

 

· 여러 테이블에서 데이터를 가져오고 싶다면 join을 사용하면 된다. 

 → join은 엑셀의  vlookup과 유사하다. 

 → join을 하는 방법은 두가지가 있다. 

 ① left join : 두 테이블 중 하나의 테이블에서 모든 내용을 조회하고 다른 하나의 테이블에서는 공통된 내용만 조회한다. 

ex)

 ② inner join : 두 테이블의 공통된 내용만 조회한다. 

ex)

 → join문을 쓸 때 들어가는 'on'은 어떤 컬럼으로 붙일 것인지를 지정하는 수식이다. 

 → join문을 쓸 때 작성하는 공통 컬럼명 부분은 꼭 동일한 컬럼명이 아니어도 사용이 가능하다. 

 ex)  

 

· 실습

 - join을 이용하여 두 개의 테이블에서 데이터 조회하기

 → 주문 테이블과 고객 테이블을 customer_id를 기준으로 left join 해서 묶어보기

 → 조회 컬럼 : order_id, customer_id, restaurant_name, price, name, age, gender

 → 내 쿼리문 및 수정사항

 

· 실습

 - 한국 음식의 주문별 결제 수단과 수수료율 조회하기

 → 조회 컬럼 : 주문번호, 식당 이름, 주문 가격, 결제 수단, 수수료율

 → 결제 정보가 없는 경우도 포함하여 조회

 → 내 쿼리문 및 수정사항

 

· 실습

 - 고객의 주문 식당 조회하기

 → 조회 컬럼 : 고객 이름, 연령, 성별, 주문 식당

 → 고객 명으로 정렬, 중복 없도록 조회 

 → 내 쿼리문 및 수정사항

 → 쿼리문에서의 궁금증 : 왜 distinct를 사용하는 걸까?

 → 이유 : distinct가 중복을 없애주는 수식이라서 사용하는 것이다. 숫자가 아닌 곳에서도 활용된다. 

 

· 실습

 - 주문 가격과 수수료율을 곱하여 주문별 수수료 구하기

 → 조회 컬럼 : 주문번호, 식당 이름, 주문 가격, 수수료율, 수수료

 → 수수료율이 있는 경우만 조회

 → 내 쿼리문 및 수정사항

 

· 실습

 - 50세 이상 고객의 연령에 따라 경로 할인율을 적용하고, 음식 타입별로 원래 가격과 할인 적용 가격 합 구하기

 → 조회 컬럼 : 음식 타입, 원래 가격, 할인 적용 가격, 할인 가격

 → 할인 : 나이 - 50 * 0.005

 → 고객 정보가 없는 경우도 포함하여 조회, 할인 금액이 큰 순서대로 정렬

 → 내 쿼리문 및 수정사항

 

· 4주 차 숙제

 - 식당별 평균 음식 주문 금액과 주문자의 평균 연령을 기반으로 segmentation 하기

 → 평균 음식 주문 금액 기준 : 5,000 / 10,000 / 30,000 / 30,000 초과

 → 평균 연령 : ~ 20대 / 30대 / 40대 / 50대 이상

 → 두 테이블 모두에 데이터가 있는 경우만 조회, 식당 이름 순 오름차순

 → 내 쿼리문과 결괏값

 

→ 정답 쿼리문과 결괏값

 

 

· 4주 차 소감

 - 어지럽다. '뭐가 이렇게 복잡하지'라는 생각이 머릿속 한 구석에서 계속 함께한다. 

그렇지만 공부를 멈출수는 없으니 어떻게든 이해해 보려고 애쓰는 시간의 연속이었다. 

4주 차를 공부하면서 보이지 않는 적에게 얻어맞는 느낌이 자꾸 들었다. 

너무 어려워. 

갑자기 쿼리문을 합치고, 테이블을 합치는 일들의 연속이 어지러울 정도로 빠르게 진행됐다.

그나마 다행으로 여긴 것은 실습이 많다는 점이었다. 

빨간펜으로 잔뜩 그어진 오류 투성이 실습 결과지만 풀면서 이해하는 것들이 늘어서 좋았다. 

3주 차와 4주 차의 난이도가 많이 다르지만 끝까지 듣고 숙제도 해볼 수 있어서 실력이 개미 눈물만큼 는 것 같아 기쁘다.