이번주는 집중학습시간인 월요일에 와다다 듣지 못하고,
화요일에 조금, 수요일에 조금, 목요일에 조금, 금요일에 조금 들어서
week3 진도를 나갔다.
집중학습시간 타이틀이 없어져서일까요....
좀처럼 집중하지 못한 한주였네요~
집중을 하지 않아서 블로그를 안쓴건지
블로그를 안써서 집중을 못한건지 모르겠지만
이번주는 전부 들은 후 블로그에 적기
CASE
와 WHEN
을 이용해 조건문을 만들 수 있다.
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
문 뒤에는 괄호를 치고
CASE
문 처럼 조건을 여러개 적을 수 없고 딱 한 가지 조건만 쓸 수 있다.CASE문과 IF문은 섞어서 쓸 수 있다.
엑셀 피봇테이블과 같은 기능으로 행 방향 테이블을 열 방향으로도 볼 수 있다.
CASE
를 이용해 보고 싶은 카테고리를 출력하고,
GROUP BY
를 이용해 집계한다.
지역 | 카테고리 | 값 |
---|---|---|
서울 | 식당 | 3 |
대전 | 카페 | 2 |
서울 | 카페 | 1 |
이렇게 생긴 데이터를 피봇하면 아래와 같은 테이블이 만들어진다.
식당 | 카페 | |
---|---|---|
서울 | 3 | 1 |
대전 | 0 | 2 |
코드는 아래와 같다 (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퍼센트 이해는 안된다. 왤까.. 내일 다시 봐야겠다.