Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 프로그래머스
- leetcode
- 나임
- sklearn
- KNIME 데이터 분석
- 리스트
- 텐서플로우
- pandas
- DB
- HackerRank
- 태블로
- MYSQL
- 물만날물고기
- 파이썬
- 물 만날 물고기
- SQL
- power-bi
- Revising the Select Query II
- sorted()
- 판다스
- KNIME
- Tableau
- 데이터프레임
- 해커랭크
- 코랩
- 데이터분석솔루션
- pyinstaller
- python
- colab
- 코딩테스트
Archives
- Today
- Total
물 만날 물고기
[프로그래머스/MYSQL] - (8) 대여 기록이 존재하는 자동차 리스트 구하기 String, Date 본문
DB & SQL/프로그래머스
[프로그래머스/MYSQL] - (8) 대여 기록이 존재하는 자동차 리스트 구하기 String, Date
Lung Fish 2023. 7. 11. 01:53🔍 예상 검색어
더보기
# 물만날물고기
# SQL
# 대여 기록이 존재하는 자동차 리스트 구하기String, Date
# 프로그래머스
# MYSQL
# SQL 코딩테스트
해당 포스팅은 프로그래머스 MYSQL "대여 기록이 존재하는 자동차 리스트 구하기 String, Date" 문제에 대한 풀이를 정리하였습니다.
▶ 문제
코딩테스트 연습 - 대여 기록이 존재하는 자동차 리스트 구하기 | 프로그래머스 스쿨
▶ 내 정답
(1) WHERE MONTH(START_DATE) = 10)
-- 코드를 입력하세요
-- CAR_RENTAL_COMPANY_CAR
-- CAR_RENTAL_COMPANY_RENTAL_HISTORY
-- 자동차 종류가 '세단'인 자동차들 중 10월에 대여를 시작한 기록이 있는 자동차 ID 리스트를 출력
-- 자동차 ID 리스트는 중복이 없어야 하며, 자동차 ID를 기준으로 내림차순 정렬
/* (1) 자동차 종류가 '세단'인 자동차
(SELECT *
FROM CAR_RENTAL_COMPANY_CAR
WHERE CAR_TYPE = '세단')
*/
/* (2) 10월에 대여를 시작한 기록이 있는 자동차
(SELECT *
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
WHERE MONTH(START_DATE) = 10)
*/
SELECT DISTINCT H.CAR_ID
FROM (SELECT *
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
WHERE MONTH(START_DATE) = 10) AS H
INNER JOIN (SELECT *
FROM CAR_RENTAL_COMPANY_CAR
WHERE CAR_TYPE = '세단') AS C ON H.CAR_ID = C.CAR_ID
ORDER BY H.CAR_ID DESC;
(2) WHERE DATE_FORMAT(START_DATE, "%Y-%m") = "2022-10"
SELECT DISTINCT H.CAR_ID
FROM (SELECT *
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
-- WHERE MONTH(START_DATE) = 10) AS H
WHERE DATE_FORMAT(START_DATE, "%Y-%m") = "2022-10" ) AS H
INNER JOIN (SELECT *
FROM CAR_RENTAL_COMPANY_CAR
WHERE CAR_TYPE = '세단') AS C ON H.CAR_ID = C.CAR_ID
ORDER BY H.CAR_ID DESC;
▶ 다른 사람 정답 (1)
SELECT
DISTINCT CAR_ID
FROM
CAR_RENTAL_COMPANY_RENTAL_HISTORY
LEFT JOIN
CAR_RENTAL_COMPANY_CAR USING (CAR_ID)
WHERE
CAR_TYPE='세단'
AND START_DATE LIKE '2022-10%'
ORDER BY
CAR_ID DESC;
▶ 다른 사람 정답 (2)
SELECT DISTINCT(C.CAR_ID)
FROM CAR_RENTAL_COMPANY_CAR C
INNER JOIN CAR_RENTAL_COMPANY_RENTAL_HISTORY R
ON C.CAR_ID = R.CAR_ID
WHERE C.CAR_TYPE = '세단' AND MONTH(R.START_DATE) = 10
ORDER BY C.CAR_ID DESC
▶ 다른 사람 정답 (3)
select car_id
from car_rental_company_car
where car_id in (select car_id from car_rental_company_rental_history where start_date like '%-10-%')
and
car_type = '세단'
order by car_id desc;
▶ 다른 사람 정답 (4)
SELECT
DISTINCT A.CAR_ID
FROM
CAR_RENTAL_COMPANY_CAR A
INNER JOIN CAR_RENTAL_COMPANY_RENTAL_HISTORY B ON
A.CAR_ID = B.CAR_ID
WHERE
A.CAR_TYPE= '세단' AND
MONTH(B.START_DATE) ='10'
ORDER BY
CAR_ID DESC
▶ 다른 사람 정답 (5)
-- 대여 기록이 존재하는 자동차 리스트 구하기
SELECT DISTINCT(A.CAR_ID) FROM CAR_RENTAL_COMPANY_CAR A, CAR_RENTAL_COMPANY_RENTAL_HISTORY B
WHERE A.CAR_ID = B.CAR_ID AND CAR_TYPE = '세단' AND MONTH(B.START_DATE) = '10'
ORDER BY A.CAR_ID DESC
▶ 총평
해당 문제는 JOIN과 WHERE절을 사용해서 해결할 수도 있지만, WHERE절만 사용하거나 WHERE절과 서브쿼리를 이용해 문제를 풀 수도 있다. 같은 정답이지만 다양한 풀이가 존재하는데 어떤 코드가 더 효율적인가는 조금 더 경험을 통해서 익혀야 할 것 같다.
▼ 참고자료
No. | 내용 | 비고 |
1 | [MySQL] 2022년 10월 - LIKE 활용 | 프로그래머스 스쿨 | choco-chanel 2023.6.15 15:11 |
2 | MySQL 정답 공유 join | 프로그래머스 스쿨 | 혜린 2023.3.7 14:03 |
3 | mysql 정답 공유 (join x) | 프로그래머스 스쿨 | 한관진 2023.3.28 12:09 |
4 | MySQL 답안 JOIN(X) | 프로그래머스 스쿨 | 안장근 2023.2.10 01:18 |
5 | - | - |
▼ 복습/히스토리
더보기
No. | 복습일 | 비고 |
1 | ||
2 | ||
3 | ||
4 | ||
5 |
- 작성코드
--
'DB & SQL > 프로그래머스' 카테고리의 다른 글
[프로그래머스/MYSQL] - (70) 고양이와 개는 몇 마리 있을까GROUP BY (0) | 2023.07.12 |
---|---|
[프로그래머스/MYSQL] - (17) 카테고리 별 도서 판매량 집계하기GROUP BY (0) | 2023.07.12 |
[프로그래머스/SQL] - (15) 평균 일일 대여 요금 구하기SELECT (0) | 2023.06.25 |
[프로그래머스/SQL] - (16) 저자 별 카테고리 별 매출액 집계하기 GROUP BY (0) | 2023.06.25 |
[프로그래머스/SQL] - (13) 자동차 대여 기록에서 장기/단기 대여 구분하기 (0) | 2023.06.24 |