프로그래머스 MYSQL 12세 이하인 여자 환자 목록 출력하기
2023. 1. 4. 23:23ㆍSQL/MYSQL
문제. PATIENT 테이블에서 12세 이하인 여자환자의 환자이름, 환자번호, 성별코드, 나이, 전화번호를 조회하는 SQL문을 작성해주세요. 이때 전화번호가 없는 경우, 'NONE'으로 출력시켜 주시고 결과는 나이를 기준으로 내림차순 정렬하고, 나이 같다면 환자이름을 기준으로 오름차순 정렬해주세요.
1. 나의 답
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
2. 왜이렇게 생각했나
SELECT PT_NAME, PT_NO, GEND_CD, AGE, IFNULL(TLNO, 'NONE')
FROM PATIENT
사실 환자이름, 환자번호, 성별코드, 나이, 전화번호가 PATIENT 테이블의 전체이기 때문에 SELECT에 *을 입력하려 하였으나, 전화번호의 NULL값은 'NONE'으로 변경해 주어야 하기 때문에 전체를 적어주고 TLNO는 IFNULL함수를 사용하여주었다.
적으면서 보니 뒤에 as TLNO를 붙여 컬럼명을 설정할걸 그랬나 싶다.
WHERE AGE <= 12 AND GEND_CD = 'W'
ORDER BY AGE DESC, PT_NAME
12세 이하인 여성을 찾아야 하기 때문에 AGE <=12 AND GEND_CD = 'W'를 기재하였다. 정렬기준은 나이를 기준으로 내림차순 이기때문에 AGE DESC를 먼저 쓰고 동일 한 경우 환자이름 기준으로 오름차순이기 때문에 뒤에 PT_NAME을 붙여주었다.
3. 만난오류
SELECT PT_NAME, PT_NO, GEND_CD, AGE, IFNULL(TLNO, 'NONE')
첫번째는 자연스럽게 틀려서 왜 틀렸는지 고민했던 부분이다
SELECT PT_NAME, PT_NO, GEND_CD, AGE, ISNULL(TLNO, NONE)
위와 같이 적어서 문제가 되었기에 당연히 NONE에 ' '가 없기 때문이라고 생각했었는데 고쳐도 해결이 안되었다. 그래서 자세히 들여다보니 IFNULL인데 ISNULL이라고 적었었다. '이건 파이썬이 아니다'를 5번 외치고 고쳤다. 찾아보니 MSSQL에서는 ISNULL로 쓴다고 한다.
'SQL > MYSQL' 카테고리의 다른 글
프로그래머스 MySQL 가격대 별 상품 개수 구하기 (0) | 2023.01.30 |
---|---|
프로그래머스 MySQL 진료과별 총 예약 횟수 출력하기 (0) | 2023.01.27 |
프로그래머스 MySQL 자동차 종류 별 특정 옵션이 포함된 자동차 수 구하기 (0) | 2023.01.19 |
프로그래머스 MYSQL 흉부외과 또는 일반외과 의사 목록 출력하기 (1) | 2022.12.20 |
프로그래머스 MYSQL 과일로만든 아이스크림 고르기 (0) | 2022.12.08 |