
본 강의는 메타코드M에서 진행되는 이상훈 강사님의 실무에 적합한 SQL역량을 키우기 위해 준비된 강의입니다.
강의 정보는 아래 이미지 링크를 클릭해 주세요

IF 구문은 SELECT구문으로 선택한 Col에 원하는 [조건]을 입력하여 해당 조건의 결과값을 새로운 Col로 생성하는 명령어라 볼 수 있다.

따라서 위 사진처럼 새로운 Col이 생성되는데 이때 새롭게 생성되는 Col은 별도의 컬럼명을 기재하지 않을 시 IF 조건문 전체를 컬러명으로 받는 문제가 있다.

따라서 위 구문처럼 IF 구문 뒤에 AS 구문을 통해 새로이 생성하는Col의 컬럼명을 기재하는 방식으로 명령어 세트를 구성한다.


해당 문제의 풀이는
1) 먼저 문제에서 제기되고 있는 컬럼을 모두 색인한 뒤
2) 색인된 구문에서 조건에 해당하는 컬럼에 대한 IF구문 조건문을 작성하고
3) IF 조건문 작성후 조건을 적용하는데 사용한 원시 컬럼(buyPrice)를 색인에서 제외하고, IF조건문으로 생성된 새로운 컬럼에 AS구문을 통한 컬럼명 부여를 수행한다.


CASE구문은 IF구문에서 사용되는 조건을 여러개 적용한 구문으로
CASE [조건 대상의 Col]
WHEN 조건1 THEN 결과1
WHEN 조건2 THEN 결과2
...
ELSE 마지막 결과
END AS [CASE 구문으로 생성된 새로운 컬럼의 명칭]
으로 문법을 사용하는 것이 일반적이다.
예를 들어 위 사진처럼 BuyPrice 컬럼에 포함된 데이터의 가격이 20달러 미만, 20달러~50달러 사이, 50달러 초과 3가지 조건으로 CASE구문을 구성한다면

위 사진과 같이 CASE구문 안에 3가지 조건에 해당하는 WHEN과 그에 대한 결과 THEN이 할당되고
CASE구문의 종결자로 END가 적용됨을 알 수 있다.

위 문제에 대한 결과는

SELECT CONCAT(firstName, ' ', lastName) AS 'Name', jobTitle,
case jobTitle
when 'Sales Rep' then 'Sales Team'
when 'VP Sales' then 'Management'
when 'VP Marketing' then 'Management'
ELSE 'Other Positions'
END AS 'Jobcategory'
FROM employees;`
이렇게 조건식 3개에 해당하는 WHEN을 적용할 수도 있지만

SELECT CONCAT(firstName, ' ', lastName) AS Name, jobTitle,
CASE
WHEN jobTitle = 'Sales Rep' THEN 'Sales Team'
WHEN jobTitle = 'VP Sales' OR jobTitle = 'VP Marketing' THEN 'Management'
ELSE 'Other Positions'
END AS Jobcategory
FROM employees;
위 구문처럼 WHEN 3가지 조건 중 VP Sales, VP Marketing은 그 결과가 Management으로 동일한 결과를 내기에
WHEN ~~ OR ~~ THEN의 혼합된 조건문을 하나 더 삽입하여 명령어 처리를 할 수 있다.
강의와는 다르게 CONCAT구문을 사용하였는데 해당 구문은 '문자열' + '문자열' = '문자열문자열'을 만드는 함수라 보면 된다.