✨Today I Learned/MySQL

240603 사전캠프 7일차(SQL 3주차 강의 정리)

임빵빵 2024. 6. 3. 17:09

SQL 3주차

 

@업무 필요한 문자 포맷이 다를 때

-특정 문자를 다른 문자로 바꾸기

replace(바꿀 컬럼, 현재 값, 바꿀 값)

[실습1] 식당 명의 'Blue Ribbon'을 'Pink Ribbon'으로 바꾸기

[실습2] 주소의 '문곡리' 를 '문가리' 로 바꾸기

 

-원하는 문자만 남기기

substr(조회 할 컬럼, 시작 위치, 글자 수)

[실습] 서울 음식점들의 주소를 전체가 아닌 '시도'만 나오도록 수정

-여러 컬럼이 문자를 합치기

concat(붙이고 싶은 값1, 붙이고 싶은 값2, 붙이고 싶은 값3, .....)

[실습] 서울시에 있는 음식점은 '[서울] 음식점명' 이라고 수정

 

@문자 데이터를 바꾸고 group by 사용하기

[실습1] 서울 지역의 음식 타입별 평균 음식 주문금액 구하기 (출력: '서울', '타입', '평균 금액')

[실습2] 이메일 도메인별 고객 수와 평균 연령 구하기

[실습3] '[지역(시도)] 음식점 이름(음식종류)' 컬럼을 만들고, 총 주문건수 구하기


@조건에 따라 포맷을 다르게 변경해야 한다면

-조건에 따라 다른 방법을 적용하고 싶을 때

if(조건, 조건을 충족할 때, 조건을 충족하지 못할 때)

[실습1] 음식 타입을 'Korean' 일 때는 '한식', 'Korean'이 아닌 경우에는 '기타'라고 지정

[실습2] ‘문곡리’ 가 평택에만 해당될 때, 평택 ‘문곡리’ 만 ‘문가리’ 로 수정

[실습3] 잘못된 이메일 주소 (gmail) 만 수정을 해서 사용

 

-조건을 여러가지 지정하고 싶을 때

case when 조건1 then 값(수식)1
         when 조건2 then 값(수식)2
         else 값(수식)3
end

 

[실습1] 음식 타입을 ‘Korean’ 일 때는 ‘한식’, ‘Japanese’ 혹은 ‘Chienese’ 일 때는 ‘아시아’, 그 외에는 ‘기타’ 라고 지정

[실습2] 음식 단가를 주문 수량이 1일 때는 음식 가격, 주문 수량이 2개 이상일 때는 음식가격/주문수량 으로 지정

[실습3] 주소의 시도를 ‘경기도’ 일때는 ‘경기도’, ‘특별시’ 혹은 ‘광역시’ 일 때는 붙여서, 아닐 때는 앞의 두 글자만 사용


@SQL로 간단한 User Segmentation 해보기

[실습] 10세 이상, 30세 미만의 고객의 나이와 성별로 그룹 나누기 (이름도 같이 출력)


@조건문으로 서로 다른 식을 적용한 수수료 구해보기

[실습1]

  • 지역과 배달시간을 기반으로 배달수수료 구하기 (식당 이름, 주문 번호 함께 출력)
  • (지역 : 서울, 기타 - 서울일 때는 수수료 계산 * 1.1, 기타일 때는 곱하는 값 없음 시간 : 25분, 30분 - 25분 초과하면 음식 가격의 5%, 30분 초과하면 음식 가격의 10%)

[실습2]

  • 주문 시기와 음식 수를 기반으로 배달할증료 구하기
  • (주문 시기 : 평일 기본료 = 3000 / 주말 기본료 = 3500 음식 수 : 3개 이하이면 할증 없음 / 3개 초과이면 기본료 * 1.2)


@SQL문에 문제 없는데 오류나는 이유

-data type이 다를 때 연산이 되지 않을 수 있다.

-출력 결과 컬럼명 옆의 'ABC or '123'을 확인해보기 >> 'ABC'는 문자로 저장이 되어있다는 의미

-따라서 문자, 숫자를 혼합하여 함수에 사용할 때는 데이터 타입을 변경해줘야 함

숫자로 변경 as decimal // 문자로 변경 as char


3주차 숙제

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

- 주중 : 25분 이상 - 주말 : 30분 이상

 

-파이썬보단 SQL이 나한테는 좀 더 이해하기 쉽다 ...

-둘이 비슷하면서 좀 다름 나한테는 파이썬이 좀 더 수학적인 느낌 ㅋㅋ ㅠ

-둘 다 열심히 해서 차차 적응해나가고 데일리 미션을 풀 수 있는 그 날까지 ... ㅠ