-
[ORACLE] 매일 5개. 프로그래머스 SQL 문제 풀기 챌린지 Day 12Study/SQL 2024. 6. 10. 17:47728x90반응형
오늘부터 새로운 도전을 시작하려고 합니다.
바로 하루 5개씩 SQL 관련 문제를 푸는 것입니다.
매일 프로그래머스에서 제공하는 SQL 문제를 5개씩 해결하며, 데이터 베이스 관리 및 쿼리 작성 능력을 성장시키고자 합니다.
또한, 오라클(Oracle) 데이터베이스를 사용하여 문제를 해결함으로써, 실제 업무 환경에서 마주칠 수 있는 다양한 상황에 대비하고자 합니다.
매일 바쁜 일상 속에서 새로운 것을 배우고 성장하는 것은 어렵겠지만, 도전이라도 하면 어떨까 합니다.
프로그래머스는 무료로 다양한 난이도의 문제를 제공하기 때문에, 저는 제일 낮은 난이도부터 정답률이 높은 순서대로 풀어 보려고 합니다.
728x90
문제 풀이
해당 문제에 대한 자세한 내용은 프로그래머스에서 찾아볼 수 있습니다!
1. 없어진 기록 찾기
천재지변으로 인해 일부 데이터가 유실되었습니다.
입양을 간 기록은 있는데, 보호소에 들어온 기록이 없는 동물의 ID와 이름을 ID 순으로 조회하는 SQL문을 작성해주세요.SELECT o.animal_id, o.name from animal_ins i, animal_outs o where i.animal_id(+) = o.animal_id and o.datetime is not null and i.datetime is null order by 1
2. 조건에 맞는 사용자 정보 조회하기
USED_GOODS_BOARD와 USED_GOODS_USER 테이블에서 중고 거래 게시물을 3건 이상 등록한 사용자의 사용자 ID, 닉네임, 전체주소, 전화번호를 조회하는 SQL문을 작성해주세요.
이때, 전체 주소는 시, 도로명 주소, 상세 주소가 함께 출력되도록 해주시고, 전화번호의 경우 xxx-xxxx-xxxx 같은 형태로 하이픈 문자열(-)을 삽입하여 출력해주세요. 결과는 회원 ID를 기준으로 내림차순 정렬해주세요.select a.writer_id, b.nickname, b.city || ' ' || b.street_address1 || ' ' || b.street_address2 as 전체주소, substr(b.tlno,1,3) || '-' || substr(b.tlno,4,4) || '-' || substr(b.tlno,8,4) as 전화번호 from (SELECT a.writer_id from USED_GOODS_BOARD a, USED_GOODS_USER b where a.writer_id = b.user_id group by a.writer_id having count(board_id) >= 3) a, USED_GOODS_USER b where a.writer_id = b.user_id order by 1 desc
반응형3. 자동차 대여 기록에서 대여중 / 대여 가능 여부 구분하기
CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블에서 2022년 10월 16일에 대여 중인 자동차인 경우 '대여중' 이라고 표시하고, 대여 중이지 않은 자동차인 경우 '대여 가능'을 표시하는 컬럼(컬럼명: AVAILABILITY)을 추가하여 자동차 ID와 AVAILABILITY 리스트를 출력하는 SQL문을 작성해주세요.
이때 반납 날짜가 2022년 10월 16일인 경우에도 '대여중'으로 표시해주시고 결과는 자동차 ID를 기준으로 내림차순 정렬해주세요.select distinct(car_id), case when car_id in (select car_id from CAR_RENTAL_COMPANY_RENTAL_HISTORY where to_char(start_date, 'yyyy-mm-dd') <= '2022-10-16' and to_char(end_date, 'yyyy-mm-dd') >= '2022-10-16') then '대여중' else '대여 가능' end as availability from CAR_RENTAL_COMPANY_RENTAL_HISTORY order by 1 desc
4. 조회수가 가장 많은 중고거래 게시판의 첨부파일 조회하기
USED_GOODS_BOARD와 USED_GOODS_FILE 테이블에서 조회수가 가장 높은 중고거래 게시물에 대한 첨부파일 경로를 조회하는 SQL문을 작성해주세요.
첨부파일 경로는 FILE ID를 기준으로 내림차순 정렬해주세요.
기본적인 파일경로는 /home/grep/src/ 이며, 게시글 ID를 기준으로 디렉토리가 구분되고, 파일이름은 파일 ID, 파일 이름, 파일 확장자로 구성되도록 출력해주세요. 조회수가 가장 높은 게시물은 하나만 존재합니다.select '/home/grep/src/' || b.board_id || '/' || b.file_id || b.file_name || b.file_ext as file_path from USED_GOODS_BOARD a, USED_GOODS_FILE b where a.board_id = b.board_id and a.views = (SELECT max(views) from used_goods_board) order by b.file_id desc
5. 헤비 유저가 소유한 장소
이 서비스에서는 공간을 둘 이상 등록한 사람을 "헤비 유저"라고 부릅니다.
헤비 유저가 등록한 공간의 정보를 아이디 순으로 조회하는 SQL문을 작성해주세요.select b.id, b.name, b.host_id from( SELECT host_id from places group by host_id having count(host_id) > 1) a, places b where a.host_id = b.host_id order by 1
728x90반응형'Study > SQL' 카테고리의 다른 글
[ORACLE] 매일 5개. 프로그래머스 SQL 문제 풀기 챌린지 Day 14 (0) 2024.06.14 [ORACLE] 매일 5개. 프로그래머스 SQL 문제 풀기 챌린지 Day 13 (2) 2024.06.11 [ORACLE] 매일 5개. 프로그래머스 SQL 문제 풀기 챌린지 Day 11 (0) 2024.06.09 [ORACLE] 매일 5개. 프로그래머스 SQL 문제 풀기 챌린지 Day 10 (0) 2024.06.07 [ORACLE] 매일 5개. 프로그래머스 SQL 문제 풀기 챌린지 Day 9 (1) 2024.06.06