문제
https://school.programmers.co.kr/learn/courses/30/lessons/131113?language=oracle
풀이
조건1.
FOOD_ORDER 테이블에서 5월 1일을 기준으로 주문 ID, 제품 ID, 출고일자, 출고여부를 조회
SELECT ORDER_ID, PRODUCT_ID, OUTDATE, "출고여부"
FROM FOOD_ORDER
이때, OUT_DATE가 YYYY-MM-DD HH-mm-ss 형식으로 나오기 때문에 YYYY-MM-DD 형식으로 조회하기 위해서는 TO_CHAR( OUT_DATE, 'YYYY-MM-DD' ) AS OUT_DATE 라고 해준다.
따라서,
SELECT ORDER_ID, PRODUCT_ID, TO_CHAR( OUT_DATE, 'YYYY-MM-DD' ) AS OUT_DATE , "출고여부"
FROM FOOD_ORDER
조건2.
출고여부는 5월 1일까지 출고완료로 이 후 날짜는 출고 대기로 미정이면 출고미정으로 출력
>> CASE WHEN을 사용하여 조건을 만족하는 컬럼을 새로 만든다.
1) 출고완료는 OUT_DATE가 2022-05-01 보다 전의 날짜여야한다.
WHEN OUT_DATE <= TO_DATE('2022-05-01', 'YYYY-MM-DD') THEN '출고완료'
2) 출고미정과 출고대기. 출고대기보다는 출고미정이 NULL 값인 ROW 값을 구하면 되기 때문에 더 조건을 주기 편하므로 출고미정을 조건으로 주고 나머지를 출고대기로 만든다.
WHEN OUT_DATE IS NULL THEN '출고미정'
ELSE '출고대기'
3) 새로만든 컬럼 이름(별칭)을 지정한다.
END AS "출고여부"
조건3.
주문 ID를 기준으로 오름차순 정렬
ORDER BY ORDER_ID ASC;
순서는
SELECT [컬럼명]
FROM [테이블명]
WHERE [조건] <= 여기서는 조건문이 없다.
ORDER BY [컬럼명] [ASC/DESC] 순으로 정렬해준다.
코드
SELECT ORDER_ID,
PRODUCT_ID,
TO_CHAR(OUT_DATE, 'YYYY-MM-DD') AS OUT_DATE,
CASE
WHEN OUT_DATE <= TO_DATE('2022-05-01', 'YYYY-MM-DD') THEN '출고완료'
WHEN OUT_DATE IS NULL THEN '출고미정'
ELSE '출고대기'
END AS "출고여부"
FROM FOOD_ORDER
ORDER BY ORDER_ID ASC;
실행결과
'하루하루 > SQL 문제풀이' 카테고리의 다른 글
[프로그래머스/Oracle] 59045. 보호소에서 중성화한 동물 (0) | 2023.12.17 |
---|---|
[Lv.3 Oracle] 144855 - 카테고리 별 도서 판매량 집계하기 (0) | 2023.11.13 |
[프로그래머스/Oracle] 59047. 이름에 el이 들어가는 동물 찾기 / 대소문자 구분하지 않는 조건일때 / UPPER, LOWER 사용 (0) | 2023.10.15 |
[프로그래머스/Oracle] 151138. 자동차 대여 기록에서 장기/단기 대여 구분하기 (1) | 2023.10.13 |