프로그래머스 MYSQL 흉부외과 또는 일반외과 의사 목록 출력하기
              
          2022. 12. 20. 05:37ㆍSQL/MYSQL
문제. DOCTOR 테이블에서 진료과가 흉부외과(CS)이거나 일반외과(GS)인 의사의 이름, 의사ID, 진료과, 고용일자를 조회하는 SQL문을 작성해주세요. 이때 결과는 고용일자를 기준으로 내림차순 정렬하고, 고용일자가 같다면 이름을 기준으로 오름차순 정렬해주세요.
1. 나의 답
SELECT d.DR_NAME, d.DR_ID, d.MCDP_CD, DATE_FORMAT(d.HIRE_YMD, '%Y-%m-%d') as HIRE_YMD FROM DOCTOR as d
WHERE d.MCDP_CD LIKE '%CS%' OR d.MCDP_CD LIKE '%GS%'
ORDER BY HIRE_YMD DESC, d.DR_NAME
2. 왜 이렇게 생각했나
SELECT d.DR_NAME, d.DR_ID, d.MCDP_CD, DATE_FORMAT(d.HIRE_YMD, '%Y-%m-%d') as HIRE_YMD FROM DOCTOR as d
문제에서 확인하고 싶은 것은 의사의 이름, 의사ID, 진료과, 고용일자이다. 그렇기 때문에 위의 4가지를 SELECT에 기재해 주었으며 참고사항에 고용일자의 형식을 '2020-03-01'와 같이 하라고 기재되어 있었기 때문에 DATE_FORMAT을 활용하여 HIRE_YMD의 포맷을 설정해주 었다.
WHERE d.MCDP_CD LIKE '%CS%' OR d.MCDP_CD LIKE '%GS%'
ORDER BY HIRE_YMD DESC, d.DR_NAME
진료과가 흉부외과(CS)이거나 일반외과(GS)인 의사의 데이터이기 때문에 WHRER문을 적게 되었다. 다른사람들의 경우 LIKE를 안 쓰고 = 을 활용하는 경우도 있던데 다음에 사용해보아야겠다. ORDER BY의 경우 위와 같이 2개의 column을 기재하면 왼쪽의 조건부터 정렬하되 값이 동일한경우 오른쪽을 기준으로 정렬해준다.
3. 만난 오류
SELECT d.DR_NAME, d.DR_ID, d.MCDP_CD, DATE_FORMAT(d.HIRE_YMD, '%Y-%m-%d') as HIRE_YMD
첫번째는 ' '가 문제가 되었다.
DATE_FORMAT(d.HIRE_YMD, %Y-%m-%d)
DATE_FORMAT을 위와 같이 작성하니 신택스 에러가 발생하였다.
두번째는 as
SELECT d.DR_NAME, d.DR_ID, d.MCDP_CD, DATE_FORMAT(d.HIRE_YMD, '%Y-%m-%d') as d.HIRE_YMD FROM DOCTOR as d
WHERE d.MCDP_CD LIKE '%CS%' OR d.MCDP_CD LIKE '%GS%'
ORDER BY d.HIRE_YMD DESC, d.DR_NAME
이미 존재하는 d.HIRE_YMD를 입력하니 마찬가지로 신택스 에러가 발생하였다. 여기서 'd.'을 제거하여 입력하니 문제없이 조회되었다.
'SQL > MYSQL' 카테고리의 다른 글
| 프로그래머스 MySQL 가격대 별 상품 개수 구하기 (0) | 2023.01.30 | 
|---|---|
| 프로그래머스 MySQL 진료과별 총 예약 횟수 출력하기 (0) | 2023.01.27 | 
| 프로그래머스 MySQL 자동차 종류 별 특정 옵션이 포함된 자동차 수 구하기 (0) | 2023.01.19 | 
| 프로그래머스 MYSQL 12세 이하인 여자 환자 목록 출력하기 (0) | 2023.01.04 | 
| 프로그래머스 MYSQL 과일로만든 아이스크림 고르기 (0) | 2022.12.08 |