TanzDev

TLT 1 본문

기록보드/TIL

TLT 1

Tanz-dev 2024. 1. 31. 17:22

4주차때 배운 Subquery, Join 복습

 

√ 서브쿼리문을 이용해 복잡한 수식을 분할하는 방법

(

) a = 'a부분은 내가 이해하기 쉬운 언어를 사용해도 무방함.

 

√ Count (distinct restaurant_name) count_res

- 퀴신 타입별로 레스토랑 이름이 몇개 있는지 그 값의 개수를 알고싶다.

 

√ 중복제거

Select count(distinct name) count

from animal_ins

 

√ Join

- 조인이 필요한 경우

 - 주문가격은 주문에 있지만, 어떤 수단으로 결제를 했는지는 결제테이블일때,

 - 주문을 한 사람을 확인하려면, 주문테이블과 고객테이블에서 각각 정보를 가져와 엑셀에서 합쳐줘야할 때

 - 주문 건별 수수료를 계산하려면 수수료율이 필요한데, 결제 테이블에 있어서 어떻게 연산할지 모를 때

 

√ Join의 정리

★ LEFT JOIN

- 공통 컬럼 기준으로, 하나의 테이블에 값이 없더라도 모두 조회되는 경우를 의미

- 쉽게 이야기해서 겹치지않더라도 하나로 묶어준다는 의미

 

★ INNER JOIN

- 공통 컬럼 기준으로, 두 테이블 모두에게 있는 값 조회

 

√ JOIN 기초문

SELECT *

FROM FOOD_ORDERS LEFT JOIN PAYMENTS ON FOOD_ORDERS.ORDER_ID = PAYMENTS.ORDER_ID

 

조금 더 쉽게할때

 

SELECT *

FROM FOOD_ORDERS A LEFT JOIN PAYMENTS B ON A.ORDER_ID = B.ORDER_ID

 

- FOOD_ORDERS 뒤에 A를 붙여주면 A로 이 문구를 설정가능함(다른문구도 가능하니 내가 편한데로 진행할것)

- 위 예시는 LEFT JOIN이며, INNER JOIN도 컬럼이 공통되어있다면 가능함

 

DBeaver 숙제

 

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 31 and 39 then 'age_group2'

when age between 40 and 49 then 'age_group3'

else 'age_group4' end age_group

from

(

select restaurant_name,

avg(age) age,

avg(price) price

from food_orders a left join customers b on a.customer_id = b.customer_id

group by 1

) a

order by 1

 

- 비교 연산자는 숫자 앞에 와야 인식됨을 확인함

- 주기적인 오류발생하며 리트라이 계속 해봄

 

'기록보드 > TIL' 카테고리의 다른 글

TIL 6 (웹개발 기초)  (1) 2024.02.05
TIL 5 (코드카타 연습)  (0) 2024.02.04
TIL 4 웹개발 (멜로디쉐어 제작)  (1) 2024.02.03
TIL 3 (ChatGPT 웹 개발하기 시작)  (1) 2024.02.02
TIL 2  (0) 2024.02.01