2024.11.06 TIL 3(AI_9기)

SMALL

[TIL]

◈ SQL 강의

논리연산자 의미  예시
AND  그리고  age>20 and gender='female'
나이가 20세 이상이고, 여성
OR  또는  age>20 or gender='female'
나이가 20세 이상이거나, 여성
NOT  아닌  not gender='female'
여성이 아닌

 
[실습] 여러 조건을 적용하여 데이터 필터링하기
1. 주문(food_orders) 테이블에서 한국음식이면서, 가격이 30,000원 이상인 경우 조회

SELECT *
FROM food_orders
WHERE cuisine_type = 'korean' #문자는 ''를 붙여야하는데 자꾸 까먹는다..
AND price>30000


2. 결제(payments) 테이블에서 카드로 결제했거나, vat 율이 0.2 이하인 경우 조회

SELECT *
FROM payments
WHERE pay_type = 'card'
OR vat <= 0.2


에러메세지에 대처하는 자세
1. 에러메세지에서 왜 에러가 났는지 확인하기
2. 자주 볼 수 있는 에러메세지
 1) 테이블 명을 다르게 적었을 때
    SQL Error Table 'sparta_lecture.payment' doesn't exist
    (테이블이 존재하지 않는다는 메세지)
 2) 컬럼 명을 다르게 적었을 때
    SQL Error Unknown column 'pay_typ' in 'field list'
    (필드명이 잘못 되었다는 메세지)
 3) 필터링 조건을 줄 때 문자에 ' '작은 따옴표 안했을 때
    SQL Error Unknown column 'Korean' in 'where clause'
    (Korean에 문제가 있다는 메세지)

숙제
상품 준비시간이 20~30분 사이인, 한국음식점의 식당명과 고객번호 조회하기

#내가 풀어본 코드
SELECT restaurant_name , customer_id 
FROM food_orders
WHERE cuisine_type = 'korean'
AND food_preparation_time 
BETWEEN 20 AND 30

#정답 
select restaurant_name, customer_id
from food_orders
where food_preparation_time between 20 and 30
and cuisine_type='Korean'



select food_preparation_time,
       delivery_time,
       food_preparation_time + delivery_time as total_time #사칙연산 모두 사용가능하다
from food_orders

SUM(합계)

select sum(price)
from food_orders


AVG(평균)

select avg(age)
from food_orders


COUNT(갯수 구하기)

select count(1) count_of_orders, 
       count(distinct customer_id) count_of_customers 
from food_orders

#count 괄호 안에 컬럼을 적어도 되고 모든 데이터 갯수를 세려면 * 또는 1을 적으면 된다
#distinct는 전체 갯수가 아니라 중복을 제외한 갯수를 셀 떄 사용한다



MIN, MAX

select MIN(quantity) as min_quantity,  #as는 별명 붙일 때 쓰는 것
       MAX(quantity) as max_quantity
from food_orders

 

오늘의 퀘스트

퀘스트 1. [걷기반]이제 좀 벌었으니 flex 한 번 해볼까요?!

#products 테이블에서 제품 이름(product_name)과 가격(price)만을 선택하는 쿼리를 작성해주세요.
select product_name, price
from products

#products 테이블에서 제품 이름에 '프로'가 포함된 모든 제품을 선택하는 쿼리를 작성해주세요.
select *
from products
where product_name like '%프로%'

#products 테이블에서 제품 이름이 '갤'로 시작하는 모든 제품을 선택하는 쿼리를 작성해주세요.
select *
from products
where product_name like '갤%'

#products 테이블에서 모든 제품을 구매하기 위해 필요한 돈을 계산하는 쿼리를 작성해주세요.
select sum(price)
from products

 

 

퀘스트 2. [걷기반]상품 주문이 들어왔으니 주문을 처리해봅시다!

#orders 테이블에서 주문 수량(amount)이 2개 이상인 주문을 진행한 소비자의 ID(customer_id)만 선택하는 쿼리를 작성
select customer_id
from orders
where amount>=2

#orders 테이블에서 2023년 11월 2일 이후에 주문된 주문 수량(amount)이 2개 이상인 주문을 선택하는 쿼리를 작성
select *
from orders
where order_date>'2023-11-02'
and amount>=2

#orders 테이블에서 주문 수량이 3개 미만이면서 배송비(shipping_fee)가 15000원보다 비싼 주문을 선택하는 쿼리를 작성
select *
from orders
where amount<3 and shipping_fee>15000

#orders 테이블에서 배송비가 높은 금액 순으로 정렬하는 쿼리를 작성해주세요!
select *
from orders
order by shipping_fee desc

 

[오늘의 소감]

SQL강의는 문제없이 따라가고 있는데 파이썬이 큰일 났다.

이진법을 이용해서 하는 연산자가 강의를 듣고 나서도 이해 못한 부분이 있다. 

아무래도 SQL 강의를 먼저 후루룩 듣고 천천히 들어야 할 것 같다.

 

https://www.tistory.com/event/write-challenge-2024

LIST

'Today I learned' 카테고리의 다른 글

본캠프 커리큘럼  (0) 2024.11.08
2024.11.07 TIL 4(AI_9기)  (3) 2024.11.07
2024.11.05 TIL 2(AI_9기)  (2) 2024.11.05
2024.11.04 TIL 1(AI_9기)  (9) 2024.11.04
2024.10.31 파이썬과 파이참을 설치하다  (0) 2024.10.31