WITH A AS(
SELECT
CAR_ID,
CASE
WHEN TO_DATE('2022-10-16', 'YYYY-MM-DD') BETWEEN START_DATE AND END_DATE THEN '1'
WHEN TO_CHAR(END_DATE, 'YYYY-MM-DD') = '2022-10-16' THEN '1'
ELSE '0'
END AS AVAILABILITY,
START_DATE,
END_DATE
FROM
CAR_RENTAL_COMPANY_RENTAL_HISTORY
ORDER BY CAR_ID DESC
)
SELECT
CAR_ID,
CASE
WHEN SUM_AVA = '0' THEN '대여 가능'
ELSE '대여중'
END AS AVAILABILITY
FROM(
SELECT CAR_ID, SUM(AVAILABILITY) AS SUM_AVA
FROM A
GROUP BY CAR_ID
ORDER BY CAR_ID DESC)
;
<포인트 정리>
1. 특정 숫자가 숫자 범위 안에 있는지
WHEN TO_DATE('2022-10-16', 'YYYY-MM-DD') BETWEEN START_DATE AND END_DATE THEN '1'
2. STR로 연산을 진행하기 뭔가 껄끄러울 때는 숫자로 돌려서 풀고 나중에 다시 mapping하는 방식을 생각해보자.
CASE
WHEN TO_DATE('2022-10-16', 'YYYY-MM-DD') BETWEEN START_DATE AND END_DATE THEN '1'
WHEN TO_CHAR(END_DATE, 'YYYY-MM-DD') = '2022-10-16' THEN '1'
ELSE '0'
3. 특정 group에 대해 case (조건문) 적용하기
SELECT
CAR_ID,
CASE
WHEN SUM_AVA = '0' THEN '대여 가능'
ELSE '대여중'
END AS AVAILABILITY
FROM(
SELECT CAR_ID, SUM(AVAILABILITY) AS SUM_AVA
FROM A
GROUP BY CAR_ID
ORDER BY CAR_ID DESC)
'DataEngineering' 카테고리의 다른 글
SQL 프로그래머스 문제 - 즐겨찾기가 가장 많은 식당 정보 출력하기 (0) | 2024.05.16 |
---|---|
SQL 프로그래머스 문제 - 조건에 맞는 사용자와 총 거래금액 조회하기 (0) | 2024.05.14 |
SQL 프로그래머스 문제 - 루시와 엘라 찾기 (0) | 2024.05.14 |
SQL 프로그래머스 문제 - 카테고리 별 상품 개수 구하기 (0) | 2024.05.14 |
SQL 프로그래머스 문제 - 자동차 평균 대여 기간 구하기 (0) | 2024.05.14 |