SELECT
조건에 맞는 도서 리스트 출력하기(Lv1)
문제 설명
문제
BOOK 테이블에서 2021년에 출판된 '인문' 카테고리에 속하는 도서 리스트를 찾아서 도서 ID(BOOK_ID), 출판일 (PUBLISHED_DATE)을 출력하는 SQL문을 작성해주세요. 결과는 출판일을 기준으로 오름차순 정렬해주세요.
풀이
SELECT로 도서ID, 출판날짜를 조회
결과에서 출판날짜의 형식이 다르기 때문에 DATE_FORMAT으로 형식 변환
WHERE문에서 출판년도 2021년, 카테고리는 인문으로 설정
ORDER BY에서 출판날짜를 오름차순 정렬
SELECT BOOK_ID, DATE_FORMAT(PUBLISHED_DATE,'%Y-%m-%d') PUBLISHED_DATE
FROM BOOK
WHERE PUBLISHED_DATE LIKE '2021%'
AND CATEGORY = '인문'
ORDER BY PUBLISHED_DATE;
SUM, MAX, MIN
최소값 구하기(Lv2)
문제 설명
문제
동물 보호소에 가장 먼저 들어온 동물은 언제 들어왔는 조회하는 SQL 문을 작성해주세요.
풀이
SELECT에서 가장 먼저 들어온 동물의 시간을을 MIN(DATETIME)로 조회
SELECT MIN(DATETIME)
FROM ANIMAL_INS;
GROUP BY
대여 횟수가 많은 자동차들의 월별 대여 횟수 구하기(Lv3)
문제 설명
문제
CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블에서 대여 시작일을 기준으로 2022년 8월부터 2022년 10월까지 총 대여 횟수가 5회 이상인 자동차들에 대해서 해당 기간 동안의 월별 자동차 ID 별 총 대여 횟수(컬럼명: RECORDS) 리스트를 출력하는 SQL문을 작성해주세요. 결과는 월을 기준으로 오름차순 정렬하고, 월이 같다면 자동차 ID를 기준으로 내림차순 정렬해주세요. 특정 월의 총 대여 횟수가 0인 경우에는 결과에서 제외해주세요.
풀이
SELECT에서 월, 차ID, 월별 대여횟수를 조회
WHERE에서 차ID가 8~10월 사이 대여횟수가 5회 이상인것으로 설정 (서브쿼리문)
월을 8~10월로 설정
GROUP BY에서 월, 차ID를 그룹화
ORDER BY에서 월을 기준으로 오름차순 정렬, 월이 같다면 자동차 ID를 기준으로 내림차순 정렬
SELECT MONTH(START_DATE) AS MONTH,
CAR_ID,
COUNT(*) AS RECORDS
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
WHERE CAR_ID IN (
SELECT CAR_ID
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
WHERE MONTH(START_DATE) BETWEEN '08' AND '10'
GROUP BY CAR_ID
HAVING COUNT(*) >= 5
)
AND MONTH(START_DATE) BETWEEN '08' AND '10'
GROUP BY MONTH, CAR_ID
ORDER BY MONTH, CAR_ID DESC;
IS NULL
NULL 처리하기(Lv2)
문제 설명
문제
입양 게시판에 동물 정보를 게시하려 합니다. 동물의 생물 종, 이름, 성별 및 중성화 여부를 아이디 순으로 조회하는 SQL문을 작성해주세요. 이때 프로그래밍을 모르는 사람들은 NULL이라는 기호를 모르기 때문에, 이름이 없는 동물의 이름은 "No name"으로 표시해 주세요.
풀이
SELECT에서 동물의 생물 종, 이름, 성별 및 중성화 여부를 조회
IFNULL을 통해 NAME열에 존재하는 null값은 No name으로 변
ORDER BY에서 아이디 순으로 정렬
SELECT ANIMAL_TYPE, IFNULL(NAME,'No name') NAME, SEX_UPON_INTAKE
FROM ANIMAL_INS
ORDER BY ANIMAL_ID;
JOIN
조건에 맞는 도서와 저자 리스트 출력하기(Lv2)
문제 설명
문제
'경제' 카테고리에 속하는 도서들의 도서 ID(BOOK_ID), 저자명(AUTHOR_NAME), 출판일(PUBLISHED_DATE) 리스트를 출력하는 SQL문을 작성해주세요. 결과는 출판일을 기준으로 오름차순 정렬해주세요.
풀이
SELECT에서 도서 ID, 저자명, 출판일을 조회
두 테이블을 모두 사용해야하므로, 공통 컬럼인 AUTHOR_ID로 JOIN을 한다
WHERE에서 경제 카테고리 설정
ORDER BY에서 출판일 기준 오름차순 정렬
SELECT BOOK_ID, A.AUTHOR_NAME, DATE_FORMAT(PUBLISHED_DATE,'%Y-%m-%d') PUBLISHED_DATE
FROM BOOK B
JOIN AUTHOR A ON A.AUTHOR_ID = B.AUTHOR_ID
WHERE CATEGORY = '경제'
ORDER BY PUBLISHED_DATE;
String, Date
조건에 부합하는 중고거래 상태 조회하기(Lv2)
문제 설명
문제
USED_GOODS_BOARD 테이블에서 2022년 10월 5일에 등록된 중고거래 게시물의 게시글 ID, 작성자 ID, 게시글 제목, 가격, 거래상태를 조회하는 SQL문을 작성해주세요. 거래상태가 SALE 이면 판매중, RESERVED이면 예약중, DONE이면 거래완료 분류하여 출력해주시고, 결과는 게시글 ID를 기준으로 내림차순 정렬해주세요.
풀이
SELECT에서 게시글 ID, 작성자 ID, 게시글 제목, 가격, 거래상태를 조회
여기서 STATUS는 CASE문을 통해 다시 분류!
WHERE에서 생성날짜가 22년 10월 5일로 설정
ORDER BY에서 게시글 ID를 기준으로 내림차순 정렬
SELECT
BOARD_ID, WRITER_ID, TITLE, PRICE,
CASE
WHEN STATUS = 'SALE' THEN '판매중'
WHEN STATUS = 'RESERVED' THEN '예약중'
ELSE '거래완료'
END AS STATUS
FROM USED_GOODS_BOARD
WHERE CREATED_DATE LIKE '2022-10-05%'
ORDER BY BOARD_ID DESC;
'SQL > 프로그래머스' 카테고리의 다른 글
프로그래머스 | SQL 스터디 6 (0) | 2024.09.03 |
---|---|
프로그래머스 | SQL 스터디 5 (0) | 2024.09.03 |
프로그래머스 | SQL 스터디 3 (2) | 2024.09.03 |
프로그래머스 | SQL 스터디 2 (0) | 2024.09.03 |
프로그래머스 | SQL 스터디 1 (IFNULL, USING) (0) | 2024.09.03 |