[SQL] 20240215

김예지·2024년 2월 15일

SQL 풀이

목록 보기
17/26
post-thumbnail

*프로그래머스 SQL 문제 풀이입니다.


문제 1: NULL 처리하기

📃 문제 1 링크

입양 게시판에 동물 정보를 게시하려 합니다. 동물의 생물 종, 이름, 성별 및 중성화 여부를 아이디 순으로 조회하는 SQL문을 작성해주세요. 이때 프로그래밍을 모르는 사람들은 NULL이라는 기호를 모르기 때문에, 이름이 없는 동물의 이름은 "No name"으로 표시해 주세요.

🔎 풀이 포인트

  • 조건: 동물 정보 게시(이름이 없는 동물의 경우 'No name'으로 표시)
  • 정렬: 아이디(ANIMAL_ID) 기준 오름차순
  • OUTPUT COLUMNS: 종, 이름, 성별 및 중성화 여부

제출 답안

SELECT ANIMAL_TYPE, NVL(NAME, 'No name'), SEX_UPON_INTAKE
FROM ANIMAL_INS
ORDER BY ANIMAL_ID ; 

문제 2: 나이 정보가 없는 회원 수 구하기

📃 문제 2 링크

USER_INFO 테이블에서 나이 정보가 없는 회원이 몇 명인지 출력하는 SQL문을 작성해주세요. 이때 컬럼명은 USERS로 지정해주세요.

🔎 풀이 포인트

  • 조건: 나이 정보가 없는 회원의 수
  • 정렬: x
  • OUTPUT COLUMNS: USERS(나이 정보가 없는 회원의 수)

제출 답안

SELECT COUNT(USER_ID) AS USERS
FROM USER_INFO
WHERE AGE IS NULL; 

문제 3: 자동차 대여 기록에서 장기/단기 대여 구분하기

📃 문제 3 링크

CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블에서 대여 시작일이 2022년 9월에 속하는 대여 기록에 대해서 대여 기간이 30일 이상이면 '장기 대여' 그렇지 않으면 '단기 대여' 로 표시하는 컬럼(컬럼명: RENT_TYPE)을 추가하여 대여기록을 출력하는 SQL문을 작성해주세요. 결과는 대여 기록 ID를 기준으로 내림차순 정렬해주세요.

🔎 풀이 포인트

  • 조건: 대여 시작일이 2022년 9우러에 속하는 대여 기록, 대여 기간이 30일 이상이면 장기 대여, 그렇지 않으면 단기 대여로 표시(RENT_TYPE)
  • 정렬: HISTORY_ID 기준 내림차순
  • OUTPUT COLUMNS: HISTORY__ID, CAR_ID, START_DATE, END_DATE, RENT_TYPE

제출 답안

SELECT HISTORY_ID, CAR_ID, TO_CHAR(START_DATE, 'YYYY-MM-DD'), TO_CHAR(END_DATE, 'YYYY-MM-DD'),
	CASE WHEN (END_DATE - START_DATE) + 1 >= 30 
    	THEN '장기 대여'
        ELSE '단기 대여'
    END AS RENT_TYPE
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
WHERE TO_CHAR(START_DATE, 'YYYYMM') = '202209'
ORDER BY HISTORY_ID DESC; 
profile
넓고 얕게? 좁고 깊게?

0개의 댓글