728x90
REPLACE : 데이터 값을 바꾸고 싶을 때
기본 구조
replace(바꿀 컬럼, 현재 값, 바꿀 값)
예시1) 최근에 상점 이름이 바뀌었지만 과거 데이터에는 옛날 이름으로 저장되어있어요
select restaurant_name "원래 상점명",
replace(restaurant_name, 'Blue', 'Pink') "바뀐 상점명"
from food_orders
where restaurant_name like '%Blue Ribbon%' -- 제대로 바뀌었는지 확인하기 위해서 blue ribbon이 들어가 있는 데이터만 추출
/* 원래 상점명 컬럼에 들어가 있는 'Blue'를 모두 'Pink'로 변경
예시2) 예전에 ‘문곡리’ 라는 지명이 ‘문가리’ 로 바뀌었어요
SELECT addr,
REPLACE(addr, '문곡리', '문가리') "바뀐주소"
FROM food_orders
WHERE addr like '%문곡리%'
SUBSTRING(SUBSTR) : 특정 문자만 골라서 조회하는 구문
기본 구조
substr(조회 할 컬럼, 시작 위치, 글자 수)
* '글자 수'는 끝까지 조회할 경우 생략 가능
(실습)서울 음식점들의 주소를 전체가 아닌 ‘시도’ 만 나오도록 수정
SELECT addr "원래 주소",
SUBSTR(addr, 1, 2) "시도"
FROM food_orders
WHERE addr LIKE '%서울특별시%'
CONCAT : 여러 컬럼의 문자를 합치기
기본 구조
concat(붙이고 싶은 값1, 붙이고 싶은 값2, 붙이고 싶은 값3, .....)
- 붙일 수 있는 문자의 종류
- 컬럼
- 한글
- 영어
- 숫자
- 기타 특수문자
(실습)서울시에 있는 음식점은 ‘[서울] 음식점명’ 이라고 수정
SELECT restaurant_name "원래 이름",
addr "원래 주소",
CONCAT('[', SUBSTRING(addr, 1, 2), '] ', restaurant_name) "바뀐 이름"
FROM food_orders
WHERE addr like '%서울%'
[실습] 문자 데이터를 바꾸고, GROUP BY 사용하기
서울 지역의 음식 타입별 평균 음식 주문금액 구하기 (출력 : ‘서울’, ‘타입’, ‘평균 금액’)
SELECT SUBSTR(addr,1,2) "지역",--컬럼1
cuisine_type "타입",--컬럼2
AVG(price) "평균 금액"--컬럼3
FROM food_orders
WHERE addr LIKE '서울%'
GROUP BY cuisine_type --GROUP BY 1,2 라고 적어도 무관
[실습] 이메일 도메인별 고객 수와 평균 연령 구하기
SELECT
SUBSTR(email, 10) "도메인",
COUNT(name) "고객 수",
AVG(age)
FROM customers
GROUP BY 1
-- SUBSTR(email, 9) 에서 마지막 글자까지 추출할 경우 생략 가능
[실습] ‘[지역(시도)] 음식점이름 (음식종류)’ 컬럼을 만들고, 총 주문건수 구하기
SELECT
CONCAT('[',SUBSTR(addr, 1,2),']',restaurant_name,'(',cuisine_type,')') "음식점",
COUNT(1) "주문 건수"
FROM food_orders
GROUP BY 1
728x90
'내일배움캠프 > SQL' 카테고리의 다른 글
[SQL]Subquery로 여러 번의 연산을 한 번에 (2) | 2024.11.15 |
---|---|
[SQL]3주차_IF, CASE (조건에 따라 포맷을 다르게 지정하기) (0) | 2024.11.14 |
[SQL]사전캠프과제6 (0) | 2024.11.13 |
[SQL]2주차_Distinct, Group by, Order by (0) | 2024.11.13 |
[SQL]사전캠프과제_4,5 (0) | 2024.11.08 |