엑셀보다 쉽고 빠른 SQL - 3주차

2025. 5. 7. 23:26SQL

🔁 SQL 기본 구조 복습

SELECT
FROM
WHERE
GROUP BY
ORDER BY

 

📌 예제

 

조건에 따라 SQL 구조 매칭해보기

 

 

  • 주문 테이블에서FROM
  • 주문 수량이 1건인 주문건의WHERE
  • 음식 가격의 평균을 음식 종류별로 조회하여AVG, GROUP BY
  • 음식 가격이 높은 순서대로 정렬하기ORDER BY

 


 

02. 다양한 문자 포맷 처리하기 (REPLACE, SUBSTRING, CONCAT)

 

 

✅ 1. 문자 데이터를 가공해야 하는 이유

 

업무에 사용할 데이터를 조회했지만, 그대로 쓰기 어려운 경우가 있습니다. 예를 들어:

 

  • 이전에 사용하던 이름이나 주소가 포함된 데이터를 현재 기준으로 바꾸고 싶을 때
  • 전체 주소가 아닌 시·도 정보만 필요할 때
  • 두 개 이상의 값을 합쳐 새로운 포맷으로 만들고 싶을 때

 


 

🔧 2. 특정 문자 바꾸기: 

REPLACE

REPLACE(컬럼명, 바꿀 대상, 새 값)

 

예제

 

  • ‘Blue Ribbon’ → ‘Pink Ribbon’ 으로 변경
SELECT restaurant_name AS "원래 상점명",
       REPLACE(restaurant_name, 'Blue', 'Pink') AS "바뀐 상점명"
FROM food_orders
WHERE restaurant_name LIKE '%Blue Ribbon%'

 

 


 

✂️ 3. 원하는 문자열만 남기기: 

SUBSTRING

 또는 

SUBSTR

SUBSTR(컬럼명, 시작 위치, 글자 수)

 

예제

 

  • ‘서울특별시 강남구’ → ‘서울’
SELECT addr AS "원래 주소",
       SUBSTR(addr, 1, 2) AS "시도"
FROM food_orders
WHERE addr LIKE '%서울특별시%'

 

 


 

➕ 4. 문자열 합치기: 

CONCAT

CONCAT(값1, 값2, 값3, ...)

 

예제

 

  • 서울에 있는 음식점의 이름을 ‘[서울] 음식점명’ 형식으로 변경
SELECT restaurant_name AS "원래 이름",
       addr AS "원래 주소",
       CONCAT('[', SUBSTR(addr, 1, 2), '] ', restaurant_name) AS "바뀐 이름"
FROM food_orders
WHERE addr LIKE '%서울%'

 

 


 

03. 실습 예제

 

 

📊 실습 1: 서울 지역 음식 타입별 평균 주문금액

SELECT SUBSTRING(addr, 1, 2) AS "시도",
       cuisine_type AS "음식 종류",
       AVG(price) AS "평균 금액"
FROM food_orders
WHERE addr LIKE '%서울%'
GROUP BY 1, 2

 

 


 

👥 실습 2: 이메일 도메인별 고객 수와 평균 연령

SELECT SUBSTRING(email, 10) AS "이메일 도메인",
       COUNT(customer_id) AS "고객 수",
       AVG(age) AS "평균 연령"
FROM customers
GROUP BY 1

 

 


 

🧾 실습 3: 맞춤형 식별자 만들기

 

[지역] 음식점명 (음식종류) 형식으로 바꾸고 총 주문건수를 계산
SELECT CONCAT('[', SUBSTR(addr, 1, 2), '] ', restaurant_name, ' (', cuisine_type, ')') AS "식별자",
       COUNT(*) AS "총 주문건수"
FROM food_orders
GROUP BY 1

 

 

'SQL' 카테고리의 다른 글

Azure Data Factory SQL Database에 적재해보기  (0) 2025.05.08
SQL의 기본 구조 2주차  (0) 2025.05.07