Problem Solving/프로그래머스

[MySQL] 프로그래머스 132201. 12세 이하인 여자 환자 목록 출력하기

LeeJaeJun 2024. 2. 20. 10:22
728x90
반응형

 

https://school.programmers.co.kr/learn/courses/30/lessons/132201

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

정답 코드
# SELECT IFNULL(Column명, "Null일 경우 대체 값") FROM 테이블명; 
SELECT PT_NAME, PT_NO, GEND_CD, AGE, IFNULL(TLNO,  'NONE')
FROM PATIENT
WHERE AGE <= 12 AND GEND_CD = 'W'
ORDER BY AGE DESC, PT_NAME ASC; # ASC는 생략가능
/*
CASE 
    WHEN 조건식1 THEN 식1
    WHEN 조건식2 THEN 식2
    ...
    ELSE 조건에 맞는경우가 없는 경우 실행할 식
END
*/
SELECT PT_NAME, PT_NO, GEND_CD, AGE, 
    CASE 
        WHEN TLNO IS NULL THEN "NONE"
        ELSE TLNO
    END
FROM PATIENT
WHERE AGE <= 12 AND GEND_CD = 'W'
ORDER BY AGE DESC, PT_NAME ASC;
/*
    // NULL 처리 상황
    SELECT COALESCE(Column명1, Column명1이 NULL인 경우 대체할 값)
    FROM 테이블명


    // 배타적 OR 관계 열
    // Column1 ~ 4 중 NULL이 아닌 첫 번째 Column을 출력
    SELECT COALESCE(Column명1, Column명2, Column명3, Column명4)
    FROM 테이블명
*/
# TLNO이 NULL이면 그 다음 NULL이 아닌 대채값 NONE이 출력
SELECT PT_NAME, PT_NO, GEND_CD, AGE, COALESCE(TLNO, "NONE")
FROM PATIENT
WHERE AGE <= 12 AND GEND_CD = 'W'
ORDER BY AGE DESC, PT_NAME;
실패한 코드
SELECT PT_NAME, PT_NO, GEND_CD, AGE, IF(IS NULL(TLNO), 'NONE', TLNO) AS TLNO
FROM PATIENT
WHERE AGE <= 12
AND GEND_CD = 'W'
ORDER BY AGE DESC, PT_NAME ASC;

/*
    SQL 실행 중 오류가 발생하였습니다.
    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'IS NULL(TLNO), 'NONE', TLNO)
    FROM PATIENT
    WHERE AGE <= 12
    AND GEND_CD = 'W'
    ORDE' at line 1
*/

 

 

 

 

728x90
반응형