05. 조건문 CASE, 테이블 피봇

기초/SQL|2020. 12. 29. 22:28

엑셀에서의 IF와 비슷한 문법. 실습링크

 

>SELECT CASE

>SELECT WHEN categoryid = 1 THEN '음료'

>SELECT WHEN categoryid = 2 THEN '조미료'

>SELECT ELSE '기타'

>SELECT END AS 'categoryname', *

FROM Products

>> Products 테이블에서, Categoryid가 1이면 '음료', 2이면 '조미료', 그 외면 '기타'로 표기하고

해당 column명은 categoryname으로 지정해서 나타내라.

 

*CASE 내에 비교연산자(=,<>,>,<,..) 및 논리연산자(AND,OR,..)를 넣어 표현할 수 있다.

>SELECT CASE

>SELECT WHEN categoryid = 1 AND SupplierID = 1 THEN '음료'

>SELECT WHEN categoryid = 2 THEN '조미료'

>SELECT ELSE '기타'

>SELECT END AS 'categoryname', *

FROM Products

 

*case를 이용해서 새 column을 만들고, 그 column을 기준으로 group by가 가능하다.

>SELECT CASE

>SELECT WHEN categoryid = 1 THEN '음료'

>SELECT WHEN categoryid = 2 THEN '소스'

>SELECT ELSE '이외'

>SELECT END AS new_category

>SELECT , AVG(Price)

FROM Products

GROUP BY new_category

 

 

연습문제 1 링크

내가 짠 코드

*  WHEN절은 위에 있는 절부터 차례로 정의되어 데이터가  빠져 나간다.

>>해당 데이터는 이후 WHEN절(필터)에 적용되지 않는다.   (.'.) WHEN절의 순서가 중요하다.

선생님이 짠 코드

연습문제 2 링크

* CASE문에서  ELSE  NULL을 활용하면 데이터 피봇팅이 가능하다.

참고 링크 : mode.com/sql-tutorial/sql-pivot-table/

해답

댓글()