SUBSTR(문자열 자르기)
- 문자열의 특정 위치부터 일정 길이만큼 잘라서 반환하는 함수(필요한 부분만 추출)
- 인덱스는 1부터 시작 ★
- 길이 생략시 → 끝까지 반환
- ex. “서울시 강남구” → 앞 2글자만 → “서울”
-- 기본 문법
SUBSTR(문자열, 시작위치, 길이)
CONCAT(문자열 합치기)
- 여러 문자열을 하나의 문자열로 결합하는 함수
- 여러 값 한 번에 결합 가능
- 문자열 + 컬럼 혼합 가능
- ex. “서울” + “맛집” → “서울맛집”
※ 가독성을 위해 별칭(AS(alias)) 사용 권장
-- 기본 문법
CONCAT(문자열1, 문자열2, ...)
SUBSTR, CONCAT 실습
[쿼리 작성 전, 고려 사항]
① 어떤 테이블에서 어떤 데이터를 뽑을지
② 어떤 컬럼을 이용지
③ 어떤 조건을 지정할지
④ 어떤 함수를 이용할지
-- 실습 1. 서울 지역의 음식 타입별 평균 음식 주문금액 구하기(출력 : '서울', '타입', '평균 금액')
SELECT
substr(addr, 1, 2) AS "지역", -- 주소(addr)에서 앞 2글자 추출 → 지역(예: 서울)
cuisine_type, -- 음식 타입 컬럼
AVG(price) AS "평균 금액" -- 가격 평균 계산
FROM
food_orders -- 주문 테이블
WHERE
addr LIKE '%서울%' -- 주소에 '서울' 포함된 데이터만 필터링
GROUP BY 1, 2; -- 1번(지역), 2번(음식타입) 기준으로 그룹화
-- 실습 2. 이메일 도메인별 고객 수와 평균 연령 구하기
SELECT
substr(email, 10) AS "도메인", -- 이메일에서 10번째 문자부터 잘라 도메인 추출
count(1) AS "고객 수", -- 행 개수 = 고객 수
avg(age) AS "평균 연령" -- 나이 평균 계산
FROM
customers -- 고객 테이블
GROUP BY 1; -- 1번 컬럼(도메인) 기준으로 그룹화
-- 실습 3. '[지역(시도)] 음식점이름 (음식종류)' 컬럼을 만들고, 총 주문건수 구하기
SELECT
concat('[', substr(addr, 1, 2), ']', restaurant_name, ' (',
cuisine_type, ')') AS "음식점", -- [지역]음식점명 (타입) 형태로 문자열 조합
count(1) AS "주문 건수" -- 주문 건수(행 개수)
FROM
food_orders -- 주문 테이블
GROUP BY 1; -- 1번 컬럼(가공된 음식점 문자열) 기준 그룹화
'SQL > 내용 정리' 카테고리의 다른 글
| 복잡한 연산을 서브쿼리(Subquery)로 해결하기 (0) | 2026.04.20 |
|---|---|
| 조건에 따라 다른 연산하기(IF, CASE) (0) | 2026.04.19 |
| SQL에서 시간 계산하기(YEAR, CURDATE, DATEDIFF, NOW 등) (0) | 2026.04.18 |
| WHERE 연산자(와일드카드로 필터링하기)+산술, 비교, 논리 연산자 (0) | 2026.04.16 |
| 집계함수, 그룹핑(GROUP BY, HAVING) (0) | 2026.04.16 |