BMI = 몸무게(kg) / 키(m)^2
✅ 회원들의 BIM 계산하기
SELECT email, height, weight, weight / ((height/100) * (height/100))
FROM copang_main.member;
180cm를 1.8m로 나타내기 위해 키/100를 해주었다.
또한 NULL이 포함된 계산식의 결과는 NULL임을 확인했다.

앞서 계산한 컬럼을 다른 사람이 보았을 때 BMI인지 모를 수도 있다.
alias는 원래의 컬럼 이름을 다른 이름으로 교체해서 보여주는 기능을 한다.
AS 바꿔줄 이름 혹은 (띄어쓰기 1칸) 바꿔줄 이름으로 사용한다.
SELECT
email,
height AS 키,
weight AS 몸무게,
weight / ((height/100) * (height/100)) AS BIM
FROM copang_main.member;
SELECT
email,
height 키,
weight 몸무게,
weight / ((height/100) * (height/100)) BIM
FROM copang_main.member;

CONCAT은 괄호() 안에 있는 것들을 연결하여 하나의 컬럼으로 나타낸다.
SELECT
email,
CONCAT(height, 'cm', ', ', weight, 'kg') AS '키와 몸무게',
weight / ((height/100) * (height/100)) AS BIM
FROM copang_main.member;

📝 BMI 표
- 25 ~ : 과체중 또는 비만
- 18.5 ~ 25 : 정상
- ~ 18.5 : 저체중
✅ 회원들의 BMI를 보고 비만 여부 판정하기
CASE : 사건, 경우WHEN : 조건THEN : 반환할 값ELSE : 지금까지 경우를 제외한 나머지 경우END : CASE문 종료CASE와 END에 괄호()를 씌워 AS 컬럼명 지정 가능💻 문법
CASE
WHEN 조건 THEN 반환할 값
.
.
.
ELSE 반환할 값
END
SELECT
email,
CONCAT(height, 'cm', ', ', weight, 'kg') AS '키와 몸무게',
weight / ((height/100) * (height/100)) AS BIM,
(CASE
WHEN weight IS NULL OR height IS NULL THEN '비만 여부 알 수 없음'
WHEN weight / ((height/100) * (height/100)) >= 25 THEN '과제충 또는 비만'
WHEN weight / ((height/100) * (height/100)) >= 18.5
AND weight / ((height/100) * (height/100)) < 25 THEN '정상'
ELSE '저체중'
END) AS obesity_check
FROM copang_main.member
ORDER BY obesity_check ASC;

CASE 함수에는 크게 두 종류가 있다. 단순 CASE와 검색 CASE 함수로 나뉜다.
CASE 컬럼 이름
WHEN 값 THEN 값
WHEN 값 THEN 값
WHEN 값 THEN 값
ELSE 값
END
SELECT email,
CASE age
WHEN 29 THEN '스물 아홉 살'
WHEN 30 THEN '서른 살'
ELSE age
END
FROM copang_nain.member;
ELSE age : 나머지 경우 모두 age 컬럼 값 그대로 출력
CASE
WHEN 조건1 THEN 값
WHEN 조건2 THEN 값
WHEN 조건3 THEN 값
ELSE 값
END
SELECT
email,
CONCAT(height, 'cm', ', ', weight, 'kg') AS '키와 몸무게',
weight / ((height/100) * (height/100)) AS BIM,
(CASE
WHEN weight IS NULL OR height IS NULL THEN '비만 여부 알 수 없음'
WHEN weight / ((height/100) * (height/100)) >= 25 THEN '과제충 또는 비만'
WHEN weight / ((height/100) * (height/100)) >= 18.5
AND weight / ((height/100) * (height/100)) < 25 THEN '정상'
ELSE '저체중'
END) AS obesity_check
FROM copang_main.member
ORDER BY obesity_check ASC;
✅ NULL 값을 'N/A'로 출력
SELECT COALESCE(height, 'N/A') FROM copang_main.member;
✅ NULL 값을 weight * 2.3으로 계산하고, 둘 다 NULL일 경우 'N/A' 출력
SELECT COALESCE(height, weight * 2.3, 'N/A') FROM copang_main.member;
SELECT IFNULL(height, 'N/A') FROM copang_main.member;
SELECT IF(height IS NOT NULL, height, 'N/A') FROM copang_main.member;
SELECT
CASE
WHEN height IS NOT NULL THEN height
ELSE 'N/A'
END
FROM copang_main.member;
pizza_price_cost 테이블이 있다.
원가 대비 실제 가격의 비율은 (price/cost)로 나타낼 수 있다.
pizza_price_cost 테이블의 name, price, price/cost(원가 기준 가격의 비율) 컬럼을 조회하세요.
대신 마지막 price/cost 컬럼을 사용해서 그 값이
1 =< 값 < 1.5 인 경우, ‘C. 저효율 메뉴’
1.5 <= 값 < 1.7 인 경우, ‘B. 중효율 메뉴’
1.7 <= 값 인 경우, ‘A. 고효율 메뉴’
라고 그 값을 변환해서 표시하는 추가적인 컬럼도 함께 조회하고 대신 이 컬럼에는 efficiency라는 alias를 붙여주세요.
그리고 전체 row를 efficiency 컬럼을 기준으로 내림차순, 그 다음 기준으로 price 컬럼을 기준으로 오름차순 정렬하세요.
이 중에서 가장 첫 번째 row 부터 6개만 추리세요.
SELECT name, price, price/cost,
(CASE
WHEN price/cost < 1.5 THEN 'C. 저효율 메뉴'
WHEN price/cost >= 1.5
AND price/cost < 1.7 THEN 'B. 중효율 메뉴'
ELSE 'A. 고효율 메뉴'
END) AS efficiency
FROM pizza_price_cost
ORDER BY efficiency DESC, price ASC
LIMIT 6;