MetaCODING

SQL 문법(6) CASE 본문

코딩/SQL

SQL 문법(6) CASE

METACODING 2023. 10. 28. 03:36
728x90
반응형

SQL 문법 - CASE WHEN

MySQL에서 다중 조건문을 사용하고 싶을 때 CASE 함수를 사용해서 처리할 수 있다.

CASE문은 WHEN의 조건을 순차적으로 체크하고 조건을 만족한다면 그에 해당하는 THEN 뒤에 있는 값을 반환한다.

모든 조건을 충족하지 않는다면 마지막 ELSE에 해당하는 값을 반환한다.

<CASE함수의 기본 형식>

CASE
WHEN 조건1 THEN 반환값1
WHEN 조건2 THEN 반환값2
...
ELSE 반환값
END

CASE함수 예시

자동차 대여기록에서 장기/단기대여 구분하기

 

문제설명

느 자동차 대여회사의 자동차 대여기록정보를 담은 CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블이다.

CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블은 아래와 같은 구조로 되어있으며,

HISTORY_ID, CAR_ID, START_DATE, END_DATE는

각각 자동차 대여 기록 ID, 자동차ID, 대여시작일, 대여종료일을 나타낸다.

문제

CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블에서 대여시작일이

2022년 9월에 속하는 대여기록에 대해서 대여기간이 30일이상이면 '장기대여' 그렇지않으면

'단기대여'로 표시하는  컬럼(컬럼명: RENT_TYPE)을 추가하여 대여기록을 출력하는 SQL문을 작성하라.

결과는 대여기록ID를 기준으로 내림차순으로 정렬하라.

SELECT * from CAR_RENTAL_COMPANY_RENTAL_HISTORY
SELECT * from CAR_RENTAL_COMPANY_RENTAL_HISTORY  WHERE LEFT (start_date,7) = '2022-09'
SELECT DATEDIFF('종료일', '시작일');

SELECT HISTORY_ID, CAR_ID, LEFT(START_DATE,10) AS START_DATE, LEFT(END_DATE,10) AS END_DATE,
    CASE
        WHEN DATEDIFF(END_DATE, START_DATE) + 1 >= 30 THEN '장기 대여'
        ELSE '단기 대여'
    END AS RENT_TYPE
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
WHERE LEFT(START_DATE,7) = '2022-09'
order by HISTORY_ID DESC

select created_at, updated_at,
DATEDIFF(updated_at,created_at)   as 첫날포함하지_않은차이,
DATEDIFF(updated_at,created_at) + 1   as 첫날포함된차이,
CASE 
   when created_at like '2022%' then '조건에 해당되는 값'
   ELSE '조건에 해당되지 아는 값'
  END as 기간 
from checkins c

728x90
반응형

'코딩 > SQL' 카테고리의 다른 글

SQL 문법(4) LIKE  (0) 2023.10.23
SQL 문법(3)  (0) 2023.10.22
SQL 문법(2)  (0) 2023.10.21
SQL 문법(1)  (0) 2023.10.18