[강의 요약]
[Part 05. SQL_ Ch 16. Scalar Functions] 강의 수강
클립 전체 수강
🐢 100일 챌린지 🔥 : [▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰ ] 82/100일 (82%)
오늘도 간단하게 정리
[실습 환경]
- 사용 DB
- AWS RDS에 있는 zerobase 데이터베이스
- 사용 테이블
- sandwich : 샌드위치 가게 데이터 (50개 행)
- oil_price : 주유소 유가 데이터
[Scalar Function]
▶ UCASE() : 대문자로 변환
SELECT UCASE('hello world');
-- 결과: 'HELLO WORLD'
# 예제
SELECT UCASE(store) FROM sandwich;
-- 모든 가게 이름을 대문자로 변환
▶ LCASE() : 소문자로 변환
SELECT LCASE('HELLO');
-- 결과: 'hello'
# 예제
SELECT LCASE(menu) FROM sandwich WHERE price < 5;
-- 가격이 $5 미만인 메뉴 이름을 소문자로 출력
▶ MID() : 문자열 일부 추출
MID(string, start, length)
- string
- 원본 문자열
- start
- 시작 위치 (1부터 시작, -1은 끝)
- length
- 추출할 문자 수
예시들은 다음과 같다.
SELECT MID('Sandwich Cafe', 1, 4); -- 결과: 'Sand'
SELECT MID('Sandwich Cafe', 6, 5); -- 결과: 'ich C'
SELECT MID('Sandwich Cafe', -4, 4); -- 결과: 'Cafe'
# 좀 더 복잡하게 활용
SELECT MID(menu, -4, 4) FROM sandwich ORDER BY price DESC LIMIT 1 OFFSET 10;
-- 11위 메뉴의 마지막 단어 4글자 추출
▶ LENGTH() : 문자열 길이 반환
SELECT LENGTH('Hello'); -- 결과: 5
SELECT LENGTH(' '); -- 결과: 1 (공백도 글자)
SELECT LENGTH(''); -- 결과: 0
SELECT LENGTH(NULL); -- 결과: NULL
# 예제
SELECT LENGTH(address) FROM sandwich ORDER BY price DESC LIMIT 3;
-- 가장 비싼 3개 샌드위치 가게 주소 길이
▶ ROUND() : 수치 반올림
ROUND(number, decimals)
- number
- 반올림할 숫자
- decimals
- 소수점 자릿수 (0 또는 음수도 가능)
예시는 다음과 같다.
SELECT ROUND(123.4567); -- 결과: 123
SELECT ROUND(123.4567, 1); -- 결과: 123.5
SELECT ROUND(123.4567, 2); -- 결과: 123.46
SELECT ROUND(123.4567, -1); -- 결과: 120
# 복잡하게 활용
SELECT ROUND(price, 0) FROM sandwich ORDER BY price LIMIT 3;
-- 최저가 3개 메뉴의 가격을 1달러 단위로 반올림
▶ NOW() : 현재 날짜/시간
SELECT NOW(); -- 결과: 2025-06-04 10:23:45
이건 어디에 사용할 수 있을까?
- 로그 기록
- 예약 시스템
- 데이터 최신화 확인
▶ FORMAT() : 숫자 포맷팅
FORMAT(number, decimals)
- number
- 포맷팅할 숫자
- decimals
- 소수점 자릿수
예시는 다음과 같다.
SELECT FORMAT(1234567.89, 0); -- 결과: '1,234,568'
SELECT FORMAT(1234567.89, 2); -- 결과: '1,234,567.89'
# 복잡하게 사용
SELECT FORMAT(price, 0)
FROM oil_price
WHERE ROUND(price, -1) >= 2000;
-- 가격이 십원 단위 반올림해서 2000원 이상인 경우, 천 단위 쉼표 추가
[실습 문제]
▶ 가게 이름 대문자, 메뉴 소문자로
SELECT UCASE(store), LCASE(menu) FROM sandwich;
▶ 10위 메뉴의 마지막 단어
SELECT MID(menu, -4, 4) FROM sandwich ORDER BY price DESC LIMIT 1 OFFSET 9;
▶ 메뉴 이름 평균 길이
SELECT AVG(LENGTH(menu)) FROM sandwich;
▶ oil_price 테이블 가격을 십원단위로 반올림
SELECT ROUND(price, -1) FROM oil_price;
▶ 2000원 이상 → 천 단위 쉼표 포함 조회
SELECT FORMAT(price, 0)
FROM oil_price
WHERE ROUND(price, -1) >= 2000;
▶ 각 함수의 조합 사용★
SELECT UCASE(MID(menu, 1, 5)) FROM sandwich;
[나의 생각 정리]
해당 함수들을 실무에서도 자주 사용하는 함수이므로 실습을 통해 습득하는 것이 중요함
[적용점]
특히 MID, LENGTH, ROUND는 데이터 정제 시 자주 등장한다.
“이 글은 제로베이스 데이터 스쿨 주 3일반 강의 자료 일부를 발췌하여 작성되었습니다.”
'제로베이스 데이터 취업 파트타임 > 100일 챌린지_일일 학습 일지' 카테고리의 다른 글
제로베이스 데이터 파트타임 스쿨 학습 일지 [25.06.08] (1) | 2025.06.08 |
---|---|
제로베이스 데이터 파트타임 스쿨 학습 일지 [25.06.07] (2) | 2025.06.07 |
제로베이스 데이터 파트타임 스쿨 학습 일지 [25.06.05] (2) | 2025.06.05 |
제로베이스 데이터 파트타임 스쿨 학습 일지 [25.06.04] (0) | 2025.06.04 |
제로베이스 데이터 파트타임 스쿨 학습 일지 [25.06.03] (0) | 2025.06.03 |