데이터 & AI/MySQL

[MySQL] ALIAS,CONCAT,CASE-END

뭉실뭉실뜬구름 2023. 4. 19. 09:23
728x90

컬럼의 이름을 바꾸고 여러 컬럼을 합쳐서 새로운 컬럼을 만든다.

ALIAS:

SELECT email AS EMAIL,height 키,weight ,weight/((height/100) * (height/100)) AS BMI FROM member ;

원래의 컬럼 이름을 써주고 그 뒤에 (AS 새로운 이름)을 써주면 된다. 하지만 AS를 생략하고 스페이스바 한 번 클릭 후 바로 새로운 이름을 적어도 된다.

 

CONCAT:

SELECT
email,
CONCAT(height,'cm',',',weight,'kg') AS '키와 몸무게'
FROM member;

CONCAT 함수는 하나의 컬럼 새로운 컬럼을 만든다. concat() 괄호 안에 합치고 싶은 자료들을 넣으면 된다. 위에 예에서는

키라는 컬럼과 무게라는 컬럼을 합치면서 cm와 kg 그리고,를 더해서 새로운 컬럼을 만들었고 그 컬럼 이름을 키와몸무게로 만든 것이다.

 

CASE:

SELECT
email,
CONCAT(height,'cm',',',weight,'kg') AS '키와 몸무게',
weight / ((height/100) *(height/100)) AS BMI,
(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 member
 ORDER BY obesity_check ASC;

실행결과

 

 

CASE문은조건문이라고 생각하면 편하다. WHEN절에 있는 조건을 만족 하면 뒤에 있는 THEN절에 있는 것을 반환한다.

CASE문의 기본적인 특징을 살펴보면:

  • WHEN - THEN은 항상 같이 사용한다.
  • WHEN - THEN은 여러개 사용할 수 있다.
  • ELSE가 존재한다면 모든 WHEN - THEN 조건이 TRUE(참)이 아닌 경우 ELSE의 결과값을 반환한다. 
  • ELSE가 없고, 조건이 TRUE(참)이 아니라면 NULL을 반환한다.

위에 예시는 사람들의 BMI지수를 측정하는 표를 만든 것이다. CASE안에 내용을 보면 여러 WHEN - THEN절을 만들어 BMI지수에 따라 사람들을 분류했다. 그리고 CASE-END문을 괄호로 묶고 AS를 이용하면 컬럼의 이름을 지정할 수 있다.

또한 조건절의 특성이기 때문에 WHEN절 안에  AND문을 사용할 수 있다.

728x90