3-1. 들어가며


  • 학습 내용
    • 특정 데이터 조건 : LIKE, Wildcard
    • 별칭 :Alias
    • 데이터 정렬 : ORDER BY
    • 중복 제거 : DISTINCT
    • 조건문 : IF
    • 다중 조건문 : CASE WHEN ~ THEN
    • 데이터 타입 변환 : CAST


3-2. 특정 데이터 조건과 별칭


LIKE

  • 조회 조건 값 불명확할 경우 사용
  • 조건에 문자, 숫자 포함 가능
  • Wildcard와 같이 사용

Wildcard

  • % : 조건을 포함하는 모든 문자(0개 이상)
  • _ : 한 글자
    • _의 개수로 문자열 개수 정함.
      ex) to_라고 지정하면 tom 추출, tomi 추출 ❌

  • hr이 0 && weekday에 'ur'이란 단어가 들어간 데이터 찾기

    • %%는 포함하는 문자이니 있으면 무조건 조건에 해당하는 값!
  • hr이 0 && weathersit이 'Cl'로 시작하는 데이터

  • hr이 0 && mnth이 'ma?'인 데이터

  • hr이 0 && mnth이 'ma?' && weekday에 'ur'이란 단어가 들어간 데이터

    • 3가지 조건으로 나누어서 작성!

별칭 사용하기(Alias)

  • 임시로 컬럼명 변경 시 사용

  • 기존 컬럼명의 물리적 변경 ❌

  • 사용 방법

    • 컬럼명 바로 뒤 작성
    컬럼명 AS 별칭 -- AS 생략 가능!
    • 특수문자, 대문자, 소문자, 공백 사용 시 " "또는 ' '으로 묶기
    • SELECT,FROM 절에 사용
    • 조인과 서브쿼리에서 테이블과 서비쿼리 호출을 위해 필수 사용!
  • temp, hum를 추출(hum은 'humidity' 별칭 지정)

  • bike 테이블 이름 -> 'b', temp, hum 추출



3-3. 데이터 정렬과 중복 제거


데이터 정렬하기(ORDER BY)

  • 순서
SELECT
FROM 
WHERE
ORDER BY 
LIMIT
  • SQL은 테이블에 입력된 순서대로 출력
  • 즉, 데이터를 오름차순이나 내림차순으로 정렬해 사용해야할 때에는, 정렬 방식을 도입해야 함!

  • ASC

    • 오름차순, 생략 가능!
    ORDER BY 컬럼명 ASC
    
    ORDER BY 컬럼명
  • DESC

    • 내림차순, 생략 불가능!
    ORDER BY 컬럼명 DESC
  • SELECT 구문에 컬럼 순서 직접 커스텀도 가능

    /*
    첫번째 칼럼을 기준으로 내림차순 정렬
    같은 값은 두번째 칼럼을 기준으로 정렬!
    */
    
    ORDER BY 1 DESC, 2
  • dteday, temp, cnt 컬럼 추출

    • 조건
      • cnt 높은 순 100개만 정렬
      • 순서 동일 -> temp가 낮은 순서대로 정렬
      • 컬럼 순서로 한다면..

중복제거하기(DISTINCT)

  • 고유값 반환을 위함.
  • 모든 컬럼을 고려해 중복 제거!
  • 집계함수(COUNT, SUM, AVG, MAX, MIN)에도 사용 가능

  • weekday, weathersit 컬럼 중복 제거

  • yr, weekday, weathersit 컬럼 중복 제거

중복 제거의 기준 : DISTINCT의 뒤에 오는 칼럼명이 1개 이상이라면 그 칼럼들이 모두 같은 것을 하나의 중복으로 본다!



3-4. 조건문 활용하기(IF, CASE WHEN ~ THEN ~)


IF(조건, 참일 때 반환 값, 거짓일 때 반환 값)

  • 단일 조건문(조건이 1개!)

  • 엑셀 IF 함수와 동일

  • SELECT, WHERE절에서 사용

  • IF 내부 조건 부여 시 함수와 같이 사용 가능

  • 🚨 pandasql은 if 함수가 iif 형태!

  • 1990년 이전, 이후 태어난 고객 분리

    • 조건 : '고객명', '생년월일', '1990년 기준' 별칭 사용

삼항 연산자

  • (birthday >= '1990-01-01' , '이후', '이전')
    • 해석) 생년월일이 1990년 1월 1일보다 크거나 같다 즉, 1990년이후라면 '이후'를, 그렇지 않다면 '이전'을 반환한다는 의미!


CASE WHEN ~ THEN

  • 다중 조건문

  • 조건에 따른 값을 다르게 뽑아낼 경우

  • 조건에 따라 나온 결과값을 -> 새로운 컬럼으로 만들 수 있다!

  • 해석해보기

        CASE WHEN '조건1' THEN '조건1 반환값' 
             WHEN '조건2' THEN '조건2 반환값' 
             ELSE '만족하는 조건이 없을 때 반환 값'
        END
    • 한 줄의 WHENTHEN은 한 쌍
    • 조건1에 따른 조건 1 반환값, 조건2에 따른 조건 2 반환값...등 여러 개 존재 가능
    • ELSE : 앞 조건들이 모두 미충족되었을 때!
      • ELSE가 없고 + 조건에 맞는 값 없다면? -> NULL
  • 고객 한도 : 5만원, 10만원 단위로 분리



3-5. 데이터 타입 변환하기(CAST)


CAST

  • 데이터 타입 변환 함수
  • 변환 타임 종류 : int, float, varchar(문자열), datetime(날짜)

    varchar? : 가변길이 문자열(최대 숫자만 지정하면 그 최대 수를 넘지 않는 한에서는 길이가 모자라도 된다는 의미)

CAST(컬럼 AS 변환할 타입)

-- 예시
SELECT CAST(14.58 AS int) //14(결과값)
  • 데이터 타입 확인 방법 : 테이블명.info()

  • 2011년 데이터 5개 추출

  • 타입 변경 해보기 : yr을 int -> varchar로!

여기에서 중요한 점은?

  • CAST는 어디까지나 임시로 데이터 타입을 변형하기 때문에 물리적으로 타입 변환이 이루어지지 않는다!
  • yr -> 문자열타입으로 변환, 2011년 데이터 5개만 추출
profile
언젠가 내 코드로 세상에 기여할 수 있도록, BE&Data Science 개발 기록 노트☘️

0개의 댓글