[SQL] 특정 값 정렬 MAX 또는 SUM과 IF

G ON·2024년 1월 10일

SQL

목록 보기
11/21
post-thumbnail
WITH NEW AS
    (
    SELECT 

    CAR_ID

    , CASE
        WHEN '2022-10-16' BETWEEN START_DATE AND END_DATE THEN '대여중'
        ELSE '대여 가능'
    END AS AVAILABILITY

    FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
    )

SELECT 

CAR_ID
,MAX(AVAILABILITY) AS AVAILABILITY

FROM NEW 
GROUP BY CAR_ID
ORDER BY CAR_ID DESC

→ MAX() 함수는 그룹 내에서 가장 큰 값을 반환, 사전 순서(알파벳 순서)를 기준으로 가장 뒤에 오는 값을 반환

WITH NEW AS
    (
    SELECT 

    CAR_ID

    , CASE
        WHEN '2022-10-16' BETWEEN START_DATE AND END_DATE THEN '대여중'
        ELSE '대여 가능'
    END AS AVAILABILITY

    FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
    )

SELECT 

CAR_ID
, IF( SUM( IF(AVAILABILITY="대여중", 1, 0)) > 0, "대여중", "대여 가능" ) AS AVAILABILITY

FROM NEW
GROUP BY CAR_ID
ORDER BY CAR_ID DESC

→ IF() 함수로 묶고 AVAILABILITY의 값을 대여중 또는 대여 가능을 0 또는 1로 표시 해당 SUM을 다시 "대여중" 또는 "대여 가능"으로 표기

0개의 댓글