1) 어떤 문제가 있었나
SQL 코드카타 59번 문제에서 특정 날짜에 자동차 대여 상태를 표시한 후 이를 자동차ID별로 출력해야 했는데,
특정일자 이전의 대여 기록을 거르고 대여중인 상태가 우선순위가 되도록 출력할 방법을 잡지 못함
2) 내가 시도해본 건 무엇인가
WHERE 절과 GROUP BY에 출력 조건을 제한해보려 했지만, 오답으로 체크됨
3) 어떻게 해결했나
다른 사람 쿼리문을 통해 대여시작/종료 일자 내 특정일자 포함되면 1(대여중)로, 반대는 0(대여가능)으로 치환
> MAX값을 통해 대여중 상태가 우선순위를 갖도록 하는 방법을 알게 됨
--- 내가 쓴 쿼리문 ---
SELECT car_id,
IF(SUM(RENTAL)=0, '대여 가능', '대여중') AVAILABILITY
FROM (
SELECT *,
if(DATE('2022-10-16') BETWEEN DATE(start_date) AND DATE(end_date), 1, 0) RENTAL
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
)A
GROUP BY 1
ORDER BY 1 DESC
4) 무엇을 새롭게 알았나
- SQL에서 단순히 GROUP BY만 넣으면 원하는 데이터가 나오지 않으므로, 데이터 종류에 따라 이를 숫자 정보로 치환하여 SUM, MIN, MAX 등 값을 활용하여 원하는 값만 출력할 수 있음
- UNION 수식을 활용한 해결 방법에 대해서는 추가로 공부 필요
'TIL' 카테고리의 다른 글
[231220] SQL: 코드카타 66~70 (1) | 2023.12.20 |
---|---|
[231219] SQL: 코드카타 60~65 (0) | 2023.12.19 |
[231215] Phython: 실습 - 프로덕트 개선 (1) | 2023.12.15 |
[231214] Phython: 실습 - 타깃, 동기 부여 서비스 분석 (0) | 2023.12.14 |
[231213] Phython: 실습 - 광고 효율, 상품 기획, 할인율 분석 (0) | 2023.12.13 |