Date:     Updated:

카테고리:

태그: , , ,


💡 프로그래머스 스쿨에서 제공하는 MySQL 코딩 테스트 문제들을 풀고 정리했다.


Lv1. 흉부외과 또는 일반외과 의사 목록 출력하기

❓ 문제 설명

📝 나의 답

SELECT DR_NAME, DR_ID, MCDP_CD, DATE_FORMAT(HIRE_YMD, "%Y-%m-%d")
FROM DOCTOR
WHERE MCDP_CD = "CS" OR MCDP_CD = "GS"
ORDER BY HIRE_YMD DESC, DR_NAME;

💡 풀이 팁

가장 핵심이 되는 부분은 맨 밑 주의사항이다. 날짜 포맷이 YYYY-MM-DD 형식이어야 한다는 것이다. 날짜 포맷의 변경은 DATE_FORMAT 함수를 통해 가능하다.

형식 설명
%Y 년도 4자리
%y 년도 2자리
%M 월 영문
%m 월 숫자
%D 일 영문(1st, 2nd, 3rd…)
%d, %e 일 숫자 (01 ~ 31)
%T hh:mm:ss
%r hh:mm:ss AM/PM
%H, %k 시 (~23)
%h, %l 시 (~12)
%i
%S, %s
%p AM/PM


추가로, SQL에 처음 입문 했을 때 WHEREORDER BY가 같이 쓰일 때 순서가 헷갈렸다. SQL은 구문을 입력할 때의 순서와 처리 흐름의 순서가 다르다.

SELECT 컬럼명 -- 처리 순서 5번
FROM 테이블명 -- 처리 순서 1번
WHERE 테이블 조건 -- 처리 순서 2번
GROUP BY 컬럼명 -- 처리 순서 3번
HAVING 그룹 조건 -- 처리 순서 4번
ORDER BY 컬럼명 -- 처리 순서 6번

구문을 입력할 때는 위처럼 SELECT부터 ORDER BY의 순서대로 입력하면 되지만, 처리 순서는 주석에 달아놓은 순서를 따른다.

1) FROM: 처리의 시작은 테이블을 불러오는 것부터 시작된다.
2) WHERE: 불러온 테이블에서 조건에 맞는 데이터만 추린다.
3) GROUP BY: 조건에 맞는 데이터들을 특정 컬럼을 기준으로 그룹화 시킨다.
4) HAVING: WHRER이 모든 데이터를 기준으로 조건을 걸었다면, HAVING은 GROUP BY로 그룹화된 데이터를 기준으로 조건을 건다. 이 때 HAVING에 명시할 필드는 SELECT에도 반드시 명시되어야 한다.
5) SELECT: 1~4의 과정을 거쳐 추출된 데이터를 조회한다.
6) ORDER BY: 그렇게 조회된 데이터를 정렬해준다.