본문 바로가기

프로그래머스(Oracle)

[프로그래머스 (Oracle)] 진료과별 총 예약 횟수 출력하기

728x90

문제 :

2022년 5월에 예약한 환자 수를 진료과코드 별로 조회하는 SQL문을 작성해주세요. 

이때, 컬럼명은 '진료과 코드', '5월예약건수'로 지정해주시고 

결과는 진료과별 예약한 환자 수를 기준으로 오름차순 정렬하고, 

예약한 환자 수가 같다면 진료과 코드를 기준으로 오름차순 정렬해주세요.

 

풀이 힌트 :

  1. 2022년 5월에 예약한 환자의 수를 출력하기
    • WHERE 절을 사용하여 apnt_ymd(진료예약일시) 조건을 주어 2022년 5월만 출력하게 해야 합니다. 이때 취소된 예약 건수는 포함하지 않습니다.
    • MySQL은 LIKE를 사용하거나 DATE 타입으로 변환하여 사용할 수 있습니다. Oracle은 아래와 같은 추가 조건이 있습니다:
      1. 숫자로 시작하는 열의 이름은 큰따옴표로 감싸기
      2. 문자열은 작은따옴표로 감싸기
  2. 진료과코드별로 조회하기
    • GROUP BY 절을 사용하여 진료과 코드끼리 그룹으로 묶습니다.
  3. 컬럼명은 '진료과 코드', '5월예약건수'로 지정하기
    • 열의 이름을 '진료과 코드', '5월예약건수'로 변경합니다. 이는 AS 키워드를 사용하여 변경할 수 있습니다.
  4. 진료과별 예약한 환자 수, 진료과 코드를 기준으로 오름차순 정렬하기
    • ORDER BY 절을 사용하여 오름차순으로 정렬합니다. ORDER BY 절에 컬럼이 2개가 들어오면 첫 번째 컬럼 값이 같을 경우 두 번째 컬럼을 기준으로 정렬합니다.

 


정답은 더보기 클릭

더보기
더보기

1. MYSQL

SELECT mcdp_cd as 진료과코드, COUNT(apnt_ymd) as 5월예약건수
  FROM appointment
  WHERE apnt_ymd LIKE '2022-05%'
  GROUP BY mcdp_cd
  ORDER BY 5월예약건수, mcdp_cd;

 

2. ORACLE

SELECT mcdp_cd AS "진료과코드", COUNT(apnt_ymd) AS "5월예약건수"
  FROM appointment
  WHERE TO_CHAR(apnt_ymd, 'YYYY-MM') = '2022-05'
  GROUP BY mcdp_cd
  ORDER BY "5월예약건수", mcdp_cd;
728x90