데이터리안 week 3

sujinzzang수진짱·2022년 7월 22일
0

sql basic

목록 보기
5/8

이번주는 집중학습시간인 월요일에 와다다 듣지 못하고,
화요일에 조금, 수요일에 조금, 목요일에 조금, 금요일에 조금 들어서
week3 진도를 나갔다.

집중학습시간 타이틀이 없어져서일까요....
좀처럼 집중하지 못한 한주였네요~

집중을 하지 않아서 블로그를 안쓴건지
블로그를 안써서 집중을 못한건지 모르겠지만
이번주는 전부 들은 후 블로그에 적기


조건문

CASEWHEN을 이용해 조건문을 만들 수 있다.

CASE

CASE 
	WHEN 조건 THEN 어쩌구 ELSE 저쩌구 
END

CASE 뒤에는 조건을 써준다.

  • 조건에 맞으면
    THEN 뒤에 있는 '어쩌구'를 출력
  • 조건에 해당되지 않으면
    ELSE 뒤에 있는 '저쩌구'를 출력
  • CASE 문이 끝나면 END로 마무리한다.

CASE 문은 조건을 여러개 쓸 수 있다.
파이썬의 ELIF와 같다.
1번 조건에 해당하는지보고, 해당하지 않는 것만 2번 조건에서 확인한다.
그래서 순서가 중요하다!

CASE
    WHEN 1번 조건 THEN 1
    WHEN 2번 조건 THEN 2
    ELSE 3
END

IF

IF(조건, 어쩌구, 저쩌구)

IF문 뒤에는 괄호를 치고

  • 조건
  • 조건에 해당할 경우의 출력값
  • 조건에 해당하지 않을 경우의 출력값
    순으로 적어준다.
    CASE문 처럼 조건을 여러개 적을 수 없고 딱 한 가지 조건만 쓸 수 있다.

CASE문과 IF문은 섞어서 쓸 수 있다.

테이블 피봇

엑셀 피봇테이블과 같은 기능으로 행 방향 테이블을 열 방향으로도 볼 수 있다.
CASE를 이용해 보고 싶은 카테고리를 출력하고,
GROUP BY를 이용해 집계한다.

지역카테고리
서울식당3
대전카페2
서울카페1

이렇게 생긴 데이터를 피봇하면 아래와 같은 테이블이 만들어진다.

식당카페
서울31
대전02

코드는 아래와 같다 (id 컬럼이 있다고 하자)

SELECT 지역
	, COUNT(DISTINCT CASE WHEN 카테고리 = 식당 THEN id END AS 식당id)
    , COUNT(DISTINCT CASE WHEN 카테고리 = 카페 THEN id END AS 카페id)
FROM table
GROUP BY 지역

DISTINCT를 해주는 이유는 강의를 봤는데도 아직 100퍼센트 이해는 안된다. 왤까.. 내일 다시 봐야겠다.

0개의 댓글