SQL
[SQL] 프로그래머스 고득점 kit - SELECT / 흉부외과 또는 일반외과 의사 목록 출력하기
pearhyunjin
2024. 3. 11. 16:50
프로그래머스 SQL 고득전 kit를 풀어보고 정리한 내용입니다.
맞춘 정답과 틀린 경우 생각해내지 못한 문법 위주로 작성하였습니다.
정리 내용 출처는 아래를 참고해 주세요.
Lv.1 흉부외과 또는 일반외과 의사 목록 출력하기
처음 작성 답안
WHRER에 OR를 이용해 조건을 주었다.
정렬을 여러가지 기준으로 주고자 할 때는 기준의 우선 순위 순서대로 (,)를 이용해 나열해주면 된다. 이때 정렬 방식(ASC / DESC)을 함께 작성해준다. 추가로 이 문제에서 주의해야할 점은 date 형식이었다. 시간을 제외한 형태로 출력해야 했기 때문에 따로 형식을 지정해주었다.
SELECT DR_NAME, DR_ID, MCDP_CD, date_format(hire_ymd, '%Y-%m-%d') as hire_ymd
FROM DOCTOR
WHERE MCDP_CD = "CS" OR MCDP_CD = "GS"
ORDER BY HIRE_YMD DESC, DR_NAME ASC;
추가 답안
IN()을 이용해 풀 수도 있다.
SELECT DR_NAME, DR_ID, MCDP_CD, date_format(hire_ymd, '%Y-%m-%d') as hire_ymd
FROM DOCTOR
WHERE MCDP_CD IN ('CS', 'GS')
ORDER BY HIRE_YMD DESC, DR_NAME ASC;
DateTime
날짜형 데이터 타입중 모든것을 다 표현하는 타입
- 년월일을 나타내는 Date
- 시분초를 나타내는 time
Date_format( )
날짜를 지정한 형식으로 출력하는 함수
- 첫번째 인자 -> 바꾸고자 하는 컬럼
- 두번째 인자 -> 원하는 형식
- 예시
SELECT DATE_FORMAT(NOW(),'%Y %M %d') FROM [테이블명];
SELECT DATE_FORMAT([칼럼명],'%Y %M %d') FROM [테이블명]; - 원하는 형식을 지정할때 사용되는 기호 규칙 (문자열 작성, 대소문자 구분)
기호 의미 %Y 년도 - 4자리 %y 년도 - 2자리 %M 월 - 풀영어 %m 월 - 01~ 12 %b 월 - 축약 %D 일 - 1st ~ %d 일 - 00~ 31 %e 일 - 0~31 %H 시 - 00~23 %h 시 - 01~12 %i 분 - 00~59 %S 초 - 00~59 %T hh:mm:ss
* https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_date-format