컬럼 값의 특정 문자 변경 (replace)
select restaurant_name "원래 상점명",
replace(restaurant_name, 'Blue', 'Pink') "바뀐 상점명"
from food_orders
where restaurant_name like '%Blue Ribbon%'
replace
: 특정 문자로 바꿔줘
where
: 'Blue Ribbon'이 들어간 데이터만 조회해줘 (조건절)
like
: 비슷한 데이터를 뽑아주는 구문
전체 문자 중 원하는 문자만 남기기 (substr)
select addr "원래 주소",
substr(addr, 1, 2) "시도"
from food_orders
where addr like '%서울특별시%'
substr()
: 특정한 문자를 뽑아주는 구문
(substring 써도 됨)
- 1 : 어디서부터 뽑아올지 (첫번째 문자부터)
- 2 : 얼마나 뽑아올지 (글자수 - 2글자)
원하는 데이터들 붙여주기 (concat)
select restaurant_name "원래 이름",
addr "원래 주소",
concat('[', substring(addr, 1, 2), '] ', restaurant_name) "바뀐 이름"
from food_orders
where addr like '%서울%'
실습
- 서울 지역의 음식 타입별 평균 음식 주문금액 구하기 (출력 : ‘서울’, ‘타입’, ‘평균 금액’)
SELECT SUBSTR(addr, 1, 2) "지역",
cuisine_type "타입",
avg(price) '평균 금액'
from food_orders
where addr like '%서울특별시%'
group by cuisine_type
SELECT SUBSTR(addr, 1, 2) "지역",
cuisine_type "타입",
avg(price) '평균 금액'
from food_orders
where addr like '%서울%'
group by 1, 2
- group by 1, 2 : 첫번째 컬럼, 두번째 컬럼 기준으로 묶겠다는 의미
(1 컬럼이 사실상 값이 전부 서울이라서 의미가 없음)
- 이메일 도메인별 고객 수와 평균 연령 구하기
select SUBSTR(email, 10) "도메인",
count(1) "고객 수",
avg(age) "평균 연령"
from customers
group by 1
- substr 에서 맨 끝자리까지 구하고 싶으면 세번째 매개변수는 생략
- count 전부다 셀거면 안에 * 혹은 1
- '[지역(시도)] 음식점이름 (음식종류)’ 컬럼을 만들고, 총 주문건수 구하기
SELECT concat('[', substr(addr, 1, 2), ']', restaurant_name, ' (', cuisine_type, ')') "음식점",
count(1) "주문 건수"
FROM food_orders
group by 1