2024. 9. 30. 16:53ㆍ부트캠프 TIL
1. 프로그래머스 이용한 sql과 알고리즘 문제 해결
1-1) sql 문제 : 오랜 기간 보호한 동물(2)
ㄴ 문제 : 입양간 동물 중 보호 기간이 가장 길었던 덩물 두 마리의 아이디와 이름을 조회하는 SQL문을 작성해주세요. 이때 결과는 보호 기간이 긴 순으로 조회해야 합니다.
※ 테이블 2개를 참조해서 조회.
ㄴ 설명_1 : 조회할 컬럼 체크 - (동물아이디, 동물이름)
ㄴ 설명_2 : 2개 테이블 조인할 컬럼 체크 (동물아이디)
ㄴ 설명_3 : 보호 기간이 가장 길었던 동물 찾기 ( DATEDIFF() 활용해야함 )
ㄴ 설명_4 : 보호기간이 긴 순으로 조회 (ORDER BY ASC 오름차순 활용)
ㄴ 실제 쿼리 :
SELECT a.ANIMAL_ID, a.NAME
FROM ANIMAL_INS a LEFT JOIN ANIMAL_OUTS b ON a.ANIMAL_ID = b.ANIMAL_ID
WHERE b.DATETIME IS NOT NULL
ORDER BY DATEDIFF(DATE_FORMAT(a.DATETIME, '%Y-%m-%d'), DATE_FORMAT(b.DATETIME, '%Y-%m-%d')) ASC LIMIT 0,2;
※ 입양을 간 동물 중 보호기간이 가장 길었던 이 부분이 핵심 조건이다
ㄴ ANIMAL_INS테이블의 보호시작일 & ANIMAL_OUTS테이블의 입양일 각 컬럼을 DATEDIFF를 활용해서 비교.
ㄴ 해당 조건을 WHERE문이나 서브쿼리에 활용할수 없기 때문에 ORDER BY 조건으로 직접 넣어주면 해결된다.
ㄴ ORDER BY 조건을 컬럼 조회에 넣어서 확인하면 일수를 직접 확인할 수 있다.
1-2) 알고리즘 문제 : 문자열 내림차순으로 배치하기
ㄴ문제를 보자마자 역순정렬하는 메소드 몇가지가 생각이났다.
ㄴ ArrayList에서도 역순정렬이 있지만 Arrays.sort()로 바로 진행했다.
ㄴ 향상된 for문으로 가공한 String을 다 합쳐서 리턴해준다.
'부트캠프 TIL' 카테고리의 다른 글
[46] 부트캠프 TIL - 본캠프 28일차 (16) | 2024.10.02 |
---|---|
[45] 부트캠프 TIL - 본캠프 27일차 (0) | 2024.10.01 |
[43] 부트캠프 TIL - 본캠프 25일차 (2) | 2024.09.27 |
[42] 부트캠프 TIL - 본캠프 24일차 (6) | 2024.09.26 |
[41] 부트캠프 TIL - 본캠프 23일차 (10) | 2024.09.25 |