[TIL] 24-10-07
1. 숫자 연산과 엑셀 함수
SELECT food_preparation_time,
delivery_time,
food_preparation_time + delivery_time AS total_time
FROM food_orders
이렇게 작성할 경우 컬럼이 food_preparation_time, delivery_time과 두 값이 더해진 total_time으로 나오게 됨
+, -, *, / 등을 이용해 연산이 가능함
SUM과 AVG
SELECT SUM(food_preparation_time) total_food_preparation_time,
AVG(delivery_time) avg_delivery_time
FROM food_orders
이렇게 작성할 경우 total_food_preparation_time(food_preparation_time의 합)과 avg_delivery_time(delivery_time의 평균)이 나옴
SUM은 합, AVG는 평균
COUNT
SELECT COUNT(1) count_of_orders,
COUNT(DISTINCT customer_id) count_of_customers
FROM food_orders
COUNT안에 1또는 ‘*‘이 들어갈 경우 데이터의 모든 개수를 세줌
DISTINCT는 중복을 없애주는 역할
MIN과 MAX
SELECT MIN(price) min_price,
MAX(price) max_price
FROM food_orders
MIN은 최솟값, MAX는 최댓값
2. GROUP BY
음식 타입별 가격합 구하기
SELECT cuisine_type,
SUM(price) sum_of_price
FROM food_orders
GROUP BY cuisine_type
레스토랑 이름별 최댓값 구하기
SELECT restaurant_name,
MAX(price) max_price
FROM food_orders
GROUP BY restaurant_name
결제 타입별 최근 날짜 구하기
SELECT pay_type,
MAX(date) recent_date
FROM payments
GROUP BY pay_type
GROUP BY를 이용하면 원하는 컬럼의 중복을 없앨 수 있음
3. ORDER BY
SELECT cuisine_type,
SUM(price) sum_of_price
FROM food_orders
GROUP BY cuisine_type
ORDER BY SUM(price) DESC
ORDER BY로 정렬방법을 설정할 수 있다
ASC(오름차순)와 DESC(내림차순)이 있으며, 기본값은 ASC(오름차순)임
SELECT *
FROM customers
ORDER BY gender, name
이런 식으로 두 가지 이상의 조건으로 정렬 가능
4. SQL 구조
SELECT, FROM, WHERE, GROUP BY, ORDER BY 순으로 작성
5. SQL로 데이터 가공하기 (REPLACE, SUBSTRING, CONCAT)
REPLACE
SELECT restaurant_name "원래 상점명",
REPLACE(restaurant_name, 'Blue', 'Pink') "바뀐 상점명"
FROM food_orders
WHERE restaurant_name LIKE '%Blue Ribbon%'
사용 방법: REPLACE( 컬럼명, 현재 값, 바꿀 값)
SUBSTRING
SELECT addr "원래 주소",
SUBSTR(addr, 1, 2) "시도"
FROM food_orders
WHERE addr LIKE '%서울특별시%'
SUBSTRING과 SUBSTR 중 편한걸로 작성 가능
사용 방법: SUBSTR( 컬럼명, 시작 위치, 글자 수)
CONCAT
SELECT restaurant_name "원래 이름",
addr "원래 주소",
CONCAT('[', SUBSTRING(addr, 1, 2), '] ', restaurant_name) "바뀐 이름"
FROM food_orders
WHERE addr LIKE '%서울%'
CONCAT은 원하는 값을 붙혀서 나타내 주는 함수 사용 방법: CONCAT( 붙이고 싶은 값1, 붙이고 싶은 값2, 붙이고 싶은 값3, ···· )