아.. 이 얼마만에 느껴보는 편안한 월요일이었는지..
오늘은 알고리즘 코드카타 1문제 풀고 SQL 문법이 부족하여 공부좀 했다.
챌린지반 따라가려면 기본기 탄탄해야지;😒
비교연산자
다양한 조건 ( BETWEEN, IN, LIKE )
// 10살과 20살 사이인 자
WHERE age between 10 and 20
age in (15,17,19)
// 양으로 시작하는 이름
name like '양%'
// 철로 끝나는 이름
name like '%철'
// 식당 이름에 '고기' 라는 문자가 포함
restaurant_name like '%고기%'
이름이 윤으로 끝나면서, 나이가 50세 이상인 사람을 구하고 싶을 때 어떻게 해야하나?
WHERE 절에 두 가지 조건을 써주면 됩니다.
WHERE name LIKE '%윤' age >= 50;
근데 두개를 그냥 붙인다? 아니 윤으로 끝나면서 50세 이상이라는 건지, 윤으로 끝나던가 또는 50세 이상이던가
알 수가 없습니다..
이럴 때 쓰는 것이 논리연산
WHERE name LIKE '%윤' and age >= 50;
위와 같이 써주면 됩니다~
그럼 테이블 이름은 food_orders이고, 국적은 cuisine_type, 식당명은 restaurant_name, 고객번호는 customer_id, 상품 준비시간은 food_preparation_time 일 때
상품 준비시간이 20~30분 사이인, 한국음식점의 식당명과 고객번호 조회하려면 어떻게 해야할까요?
SELECT restaurant_name, customer_id
FROM food_orders
WHERE food_preparation_time BETWEEN 20 AND 30 AND cuisine_type = "korean"
이렇게 쓸 수 있습니다~
SQL은 기본 사칙연산과 기본적인 계산 함수를 제공하고 있습니다. SUM,AVG와 같이요.
select sum(food_preparation_time) total_food_preparation_time,
avg(delivery_time) avg_food_preparation_time
from food_orders
데이터 갯수 구하기
데이터 갯수 : COUNT(컬럼) * 컬럼명 대신 1 혹은 별 사용 가능
몇개의 값을 가지고 있는지 구할 때 : DISTINCT
최대, 최소값 구하기
select min(price) min_price,
max(price) max_price
from food_orders
그러면 주문금액이 30,000원 이상인 주문 건수는 어떻게 구할까요?
select COUNT(1) count_of_order
from food_orders
WHERE food_orders.price >=30000
다음과 같이 구하면 되겠습니다 .
음식 종류별로 평균 음식을 구하기 위해서 where절을 여러번 사용하여 쿼리를 여러개로 작성하는 것은 비효율적입니다.
Group by를 이용하면 편하게 해결할 수 있어요!
음식 종류별 주문 금액 합계를 구해볼까요?
select 카테고리컬럼, 주문금액 합계
from food_orders
group by 카테고리컬럼
이런식으로 구성할 수 있겠습니다.
select cuisine_type, sum(price) sum_of_Price
from food_orders
group by cuisine_type
그럼 이번에는 음식점별 주문 금액 최댓값을 조회해보겠습니다.
select restaurant_name, max(price)
from food_orders
group by restaurant_name
참 편하고 좋네요.😁
데이터를 오름차순, 내림차순으로 정렬할 수 있어요.
바로 Order by로요.
오름차순은 ASC, 내림차순은 DESC라 표기하는데 ASC의 경우 생략이 가능합니다!
음식점별 주문금액 최댓값을 조회하는데, 최댓값 기준으로 내림차순 정렬해보겠습니다.
SELECT restaurant_name, max(price) max_price
FROM food_orders
GROUP BY restaurant_name
ORDER BY max_price DESC
그룹화 시켜준 후 주문금액 최댓값을 구해주고, 그 값을 통해 내림차순을 진행시켜주면 됩니다.
음식 종류별 가장 높은 주문 금액과 가장 낮은 주문금액을 조회하고, 가장 낮은 주문금액 순으로 (내림차순) 정렬을 끝으로 마무리 짓겠습니다.
SELECT cuisine_type, max(price) max_price, min(price) min_price
FROM food_orders
GROUP BY cuisine_type
ORDER BY min_price DESC