[36] 부트캠프 TIL - 본캠프 18일차

2024. 9. 18. 19:51부트캠프 TIL

728x90

1. 프로그래머스 이용한 sql과 알고리즘 문제 해결

1-1)  sql 문제 : 진료과별 총 예약 횟수 출력하기

ㄴ 문제 : 진료예약정보 테이블에서 2022년 5월에 예약한 환자 수를 진료과코드 별로 조회하는 SQL문을 작성해주세요. 컬럼명은 '진료과코드','5월예약건수'로 지정해주시고, 결과는 진료과별 예약한 환자 수를 기준으로 오름차순 정렬하고, 예약한 환자 수가 같다면 진료과 코드를 기준으로 오름차순 정렬해주세요.

ㄴ 설명_1 : 조회할 컬럼 체크 - (진료과코드와 5월예약건수)

ㄴ 설명_2 : 1번은 컬럼지정명으로 진행해야함.

ㄴ 설명_3 : 진료과코드별로 조회 (진료과코드컬럼을 GROUP BY로 그룹화)

ㄴ 설명_4 : 환자 수 조회(COUNT함수사용)

ㄴ 설명_5 : 2022년 5월 예약 (WHERE문에서 해당 조건 사용) , 환자수 오름차순 정렬/진료과코드 오름차순 정렬(ORDER BY ASC 활용)

ㄴ 실제 쿼리 :

SELECT 
    MCDP_CD  AS '진료과 코드', 
    COUNT(*) AS '5월예약건수'
FROM
APPOINTMENT
WHERE DATE_FORMAT(APNT_YMD, '%Y-%m-%d') LIKE '%2022-05%' 
GROUP BY MCDP_CD
ORDER BY 2 ASC, MCDP_CD ASC

 

ㄴ 진료과코드와 예약건수를 컬럼지정으로 1차 조회.

ㄴ 2022년 5월의 조건을 WHERE문에서 체크한다.(DATE_FORMAT을 사용하지않아도 무방하나,  본인은 사용하였음.)

- 시간은 제외하고 년월일만 가져와서 조회하려는 의도로 사용하였음.

ㄴ 진료과 코드를 GROUP BY진행하고, 환자수 정렬을 위해 ORDER BY로 2 두번째작성한컬럼을 가져왔다.

 

 

1-2) 알고리즘 문제 : 음양 더하기

ㄴ signs 배열에서 값이 true이면 (+) / false이면 (-)가 된다.

ㄴ 위 조건을 absolutes배열의 값에 적용시켜주면 된다.

ㄴ result라는 변수로 음, 양수를 구해오고 answer에 마지막으로 모두 더해주면서 값을 구해왔다.

 

ㄴ최종으로 삼항연산자를 활용하여 불필요한 if문을 줄여서 마무리했다.

 

 

 

728x90