제로베이스 데이터 파트타임 스쿨 학습 일지 [25.06.06]

[강의 요약]

[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일반 강의 자료 일부를 발췌하여 작성되었습니다.”