TanzDev
TLT 1 본문
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 |