John's Code Journey

[TIL] sql 강의 3주차 수강 완료 본문

Today I Learned/스파르타 사전캠프

[TIL] sql 강의 3주차 수강 완료

Johnnnn 2025. 2. 7. 17:49
728x90

1. SQL로 가공하기 (REPLACE, SUBSTRING, CONCAT)

 

replace 함수는 문자열 내에서 특정 부분을 다른 문자열로 교체할 때 사용됩니다.

 

REPLACE(string, substring, replacement)

string : 대상 문자열

substring (substr) : 교체할 부분 문자열

replacement : 교체할 새로운 문자열

 

ex)

SELECT REPLACE('Hello World', 'World', 'SQL');

 

substring 함수는 문자열의 일부를 추출할 때 사용됩니다. 시작 위치와 길이를 지정하여 문자열의 일부를 잘라냅니다.

 

SUBSTRING(string, start_position, length)

 

string: 대상 문자열

start_position: 추출을 시작할 위치 (1부터 시작)

length: 추출할 길이 (옵션, 생략하면 끝까지 추출)

 

 

ex)

SELECT SUBSTRING('Hello World', 7, 5);

 

concat 함수는 여러 개의 문자열을 하나로 합칠 때 사용됩니다.

 

CONCAT(string1, string2, ...)

 

ec)

SELECT CONCAT('Hello', ' ', 'World');

 

2. 조건에 따라 포맷을 다르게 변경해야한다면 (IF, CASE)

 

IF 함수는 조건에 따라 결과를 반환하는 함수로,  IF 함수는 단일 조건을 평가하여 결과를 반환하는 간단한 형태입니다.

 

IF(condition, true_result, false_result)

 

condition: 평가할 조건

true_result: 조건이 참일 때 반환할 값

false_result: 조건이 거짓일 때 반환할 값

 

ex)

SELECT order_id, 
       delivery_time, 
       IF(delivery_time > 30, 'Late', 'On-time') AS delivery_status
FROM food_orders;

 

만약 delivery_time이 30분 이상이면 "Late"를 반환하고, 그렇지 않으면 "On-time"을 반환합니다.

 

IF 함수는 단일 조건을 처리할 때 유용합니다.

ELSE를 사용하지 않고 두 가지 결과를 반환합니다.

 

CASE 문은 여러 조건을 평가하고, 그 조건에 맞는 값을 반환하는 기능을 가진 문법입니다.

SQL에서 조건문을 사용할 때 IF보다 더 복잡한 조건을 처리할 수 있습니다.

CASE는 검색 CASE와 단순 CASE 두 가지 형태가 있습니다.

 

단순 CASE 문은 특정 표현식을 평가하여, 그 값에 따라 다른 값을 반환하는 방식입니다.

 

CASE expression
    WHEN value1 THEN result1
    WHEN value2 THEN result2
    ...
    ELSE default_result
END

 

검색 CASE 문은 여러 조건을 평가하여 결과를 반환하는 방식으로,

여러 WHEN 절에 다양한 조건을 사용할 수 있습니다. 이 방식은 복잡한 조건을 다룰 때 매우 유용합니다.

 

ex)

SELECT order_id, 
       delivery_time, 
       CASE
           WHEN delivery_time > 30 THEN 'Late'
           WHEN delivery_time BETWEEN 20 AND 30 THEN 'Slightly late'
           ELSE 'On-time'
       END AS delivery_status
FROM food_orders;

 

 

delivery_time이 30분 초과일 경우 'Late'를 반환하고,

20분에서 30분 사이이면 'Slightly late'를 반환,

그 외의 경우에는 'On-time'을 반환합니다.

 

 

 

 

숙제

다음 조건으로 배달시간이 늦었는지 판단하는 값을 만들어주세요.

주중: 25분 이상

주말: 30분 이상

 

SELECT order_id,
       restaurant_name,
       day_of_the_week,
       delivery_time,
       CASE 
           WHEN day_of_the_week = 'Weekday' AND delivery_time >= 25 THEN 'late'
           WHEN day_of_the_week = 'Weekend' AND delivery_time >= 30 THEN 'late'
           ELSE 'on-time'
       END AS "지연여부"
FROM food_orders;

'Today I Learned > 스파르타 사전캠프' 카테고리의 다른 글

[TIL] JAVA, Spring 알아보기  (0) 2025.02.10
[TIL] sql 강의 1주차 2주차 수강 완료  (0) 2025.02.06
[TIL] SQL 집계함수  (0) 2025.02.05
[TIL] SQL 기초  (0) 2025.02.04
Spring 트랙 6기 스타터 노트  (2) 2025.02.03