TIL

2024-10-11

ideas3624 2024. 10. 11. 18:15

1. 오늘 한일

오늘은 스파르타코딩클럽 사이트에 있는 ' 엑셀보다 쉽고 빠른 SQL 3주차' 시청하고 공부했습니다.

 

2. 배운내용

■ SQL 구조 복습하자.
  1) SQL 기본 구조 복습 및 데이터 조회 조건과 매칭해보기
    (1) SQL 문의 기본 구조
       - 데이터를 줘야하는 가장 기본문 'select'
       - 어떤 테이블에서 가져올지 'from'
       - 조건을 주는 'where'
       - 어떤 범주별로 계산을 해줄 떄 사용하는 'group by'
       - Query 결과를 정렬 해주는 'order by' 

■ 업무 필요한 문자 포맷이 다를 떄, SQL 로 가공하기 (REPLACE, SUBSTRING, CONCAT)
  1) 특정 문자를 다른 문자로 바꾸기
    (1) SQL 에서는 특정 문자를 다른 것으로 바꿀 수 있는 기능을 제공한다.
    (2) 함수명 : replace
      - 사용 방법 : replace(바꿀 컬럼, 현재 값, 바꿀 값)


  2) 원하는 문자만 남기기 
    (1) SQL 에서는 특정 문자만을 고라서 조회할 수 있는 기능을 제공한다.
    (2) 함수명 : substring(substr)
      - 사용 방법 : substr(조회 할 컬럼, 시작 위치, 글자수)


  3) 여러 컬럼의 문자를 합치기
    (1) SQL 에서는 여러 컬럼의 값을 하나로 합칠 수 있는 기능을 제공한다.
    (2) 함수명 : concat
      - 사용 방법 : concat (붙이고 싶은 값1, 붙이고 싶은 값2, 붙이고 싶은 값3 ....)


■ [실습] 문자데이터를 바꾸고, GROUP BY 사용하기
  1) [실습] 서울 지역의 음식 타입별 평균 음식 주문금액 구하기 (출력: '서울', '타입', '평균 금액')


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


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



■ 조건에 따라 포맷을 다르게 변경해야 한다면 (IF,  CASE)
  1) 조건에 따라 다른 방법을 적용하고 싶을 떄 - IF 문 기초
    (1) IF 문은 원하는 조건에 충족할 때 적용할 방법과 아닌 방법을 지정해 줄 수 있다.
    (2) 사용 방법 : if(조건, 조건을 충족할 때, 조건을 충족하지 못할때.)
       - [실습 01] 음식 타입을 'korean'일 때는 '한식', 'korean' 이 아닌 경우에는 '기타' 라고 지정


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


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



  2) 조건을 여러가지 지정하고 싶을 때 - CASE 문 기초
    (1) Case 문은 각 조건별로 적용 할 값을 지정해 줄 수 있습니다. 
    (2) 사용 방법 : case [when 조건 the 값(수식)1] [when 조건 the 값(수식)2][else 값(수식)] end
    (※ [ ] 는 알아보기 좋으라고 넣은 것 식에 넣으면 안됨!!!!)
    (※ 이름과 같이 다른 언어의 케이스문 이랑 동일한 용도인거 같다.)
       - [실습 01] 음식 타입을 ‘Korean’ 일 때는 ‘한식’, ‘Japanese’ 혹은 ‘Chienese’ 일 때는 ‘아시아’, 그 외에는 ‘기타’ 라고 지정


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


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



■ [실습] SQL로 간단한 User Segmentation 해보기
  1) [실습] 10세 이상, 40세 미만의 고객의 나이와 성별로 그룹 나누기 (이름도 같이 출력)


  2) [실습] 음식 단가, 음식 종류 별로 음식점 그룹 나누기.



■ [실습] 조건문으로 서로 다른 식을 적용한 수수료 구해보기 
  1) [실습] 지역과 배달시간을 기반으로 배달수수료 구하기 (식당 이름, 주문 번호 함께 출력)

 

 
  2) [실습] 주문 시기와 음식 수를 기반으로 배달할증료 구하



1번 실습 에러 영상처럼 작성하였는데 에러 발생.
원인 : 손가락 이슈(오타) 
해결 방법 : 여러번 더 확인해보자. 오타가 나면 자동완성이 안되는데 
일단 자동완성이 안되면 한번더 확인해보다.

■ SQL문에 문제가 없는 것 같은데 왜 오류가 나나요_ (Data Type 오류 해결하기)
  1) 문자/숫자 계싼을 했더니 오류가 발생.
    (1)문자와 숫자를 혼합해서 사용 할 때에는 데이터 타입을 변경해주어야 한다.
      - 문법
        cast(데이터 as decimal), cast(데이터 as char)
      - 숫자로 변경
        cast(if(rating='Not given', '1', rating) as decimal) 
      - 문자로 변경
        concat(restaurant_name, '-', cast(order_id as char))

■ [숙제] 배달시간이 늦었는지 판단하는 값을 만들기.

 

3. 결론

다음주도 열심히 하곘습니다.!!

'TIL' 카테고리의 다른 글

2024-10-15  (0) 2024.10.15
2024-10-14  (0) 2024.10.14
2024-10-10  (1) 2024.10.10
2024-10-08  (3) 2024.10.08
2024-10-07  (0) 2024.10.07