https://school.programmers.co.kr/learn/courses/30/lessons/131113
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 설명
식품공장의 주문정보를 담은 FOOD_ORDER 테이블
Column | Type | Nullable | |
ORDER_ID | 주문 ID | VARCHAR(10) | FALSE |
PRODUCT_ID | 제품 ID | VARCHAR(5) | FALSE |
AMOUNT | 주문양 | NUMBER | FALSE |
PRODUCE_DATE | 생산일자 | DATE | TRUE |
IN_DATE | 입고일자 | DATE | TRUE |
OUT_DATE | 출고일자 | DATE | TRUE |
FACTORY_ID | 공장 ID | VARCHAR(10) | FALSE |
WAREHOUSE_ID | 창고 ID | VARCHAR(10) | FALSE |
문제
FOOD_ORDER 테이블에서 5월 1일을 기준으로 주문 ID, 제품 ID, 출고일자, 출고여부를 조회하는 SQL문을 작성해주세요. 출고여부는 5월 1일까지 출고완료로 이 후 날짜는 출고 대기로 미정이면 출고미정으로 출력해주시고, 결과는 주문 ID를 기준으로 오름차순 정렬해주세요.
결과
ORDER_ID | PRODUCT_ID | OUT_DATE | 출고여부 |
OD00000051 | P0002 | 2022-04-21 | 출고완료 |
OD00000052 | P0003 | 2022-04-27 | 출고완료 |
OD00000053 | P0005 | 2022-05-01 | 출고완료 |
OD00000054 | P0006 | 출고미정 | |
OD00000055 | P0008 | 2022-05-11 | 출고대기 |
고려할 점
1. FOOD_ORDER 테이블에 없는 출고 여부 컬럼 생성
2. FOOD_ORDER 테이블의 OUT_DATE 컬럼 값에 따른 출고 여부 컬럼 값 설정
(출고일자가 2022년 5월 1일을 넘지 않으면 출고완료, 그 이후라면 출고대기, 출고일자가 null 값이면 출고미정)
3. 날짜 형식 변경 (FOOD_ORDER 테이블에서 날짜 형식에는 시간까지 포함되어 있음)
4. 날짜 비교, null 값 여부 확인
(+ 정렬)
풀이법
1. OUT_DATE 상태에 따라 select문으로 조회한 결과를 합쳐서 보여주기
(SELECT ORDER_ID, PRODUCT_ID, DATE_FORMAT(OUT_DATE, '%Y-%m-%d') AS OUT_DATE,
'출고완료' AS 출고여부 FROM FOOD_ORDER WHERE OUT_DATE <= '2022-05-01')
UNION
(SELECT ORDER_ID, PRODUCT_ID, DATE_FORMAT(OUT_DATE, '%Y-%m-%d') AS OUT_DATE,
'출고대기' AS 출고여부 FROM FOOD_ORDER WHERE OUT_DATE > '2022-05-01')
UNION
(SELECT ORDER_ID, PRODUCT_ID, OUT_DATE,
'출고미정' AS 출고여부 FROM FOOD_ORDER WHERE OUT_DATE IS NULL)
ORDER BY ORDER_ID;
2. 조건문을 사용해 출고여부를 출력해주기
SELECT ORDER_ID, PRODUCT_ID, DATE_FORMAT(OUT_DATE, '%Y-%m-%d') AS OUT_DATE,
CASE
WHEN (OUT_DATE IS NULL) THEN '출고미정'
WHEN (OUT_DATE <= '2022-05-01') THEN '출고완료'
ELSE '출고대기' END AS 출고여부
FROM FOOD_ORDER ORDER BY ORDER_ID;
참고
https://velog.io/@kyukim/20210909
[TIL 2021.09.09] 데이터베이스
SQL - UNION에 대해서 배움.MySQL에서 SELECT 시에 임의로 컬럼 추가하는 법을 배움.UNION은 UNION과 UNION ALL 명령어를 사용 할 수 있음.UNION은 뒤에 DISTINCT를 생략한 것이라고 보면 된다.그러므로 둘의 차이
velog.io
https://heyellie.tistory.com/32
SQL 쿼리 결과에 열 추가
SQL 쿼리 결과에 열 추가 시간: 2019-05-21 20:15:27.0태그:sql sql-server ssrs-2008 번역: 출처번역 교정 나는 SSRS에 보고서를 작성 중입니다. 데이터 세트는 MS SQL 서버의 SQL 쿼리로 채워집니다. 그것은 Union
heyellie.tistory.com
https://marobiana.tistory.com/6
[MYSQL] 가져온 값을 조건에 따라 값 바꾸기(case - when - end 문)
집계 쿼리 만들 때 쓰이는 것... Group by 를 써서 데이터를 가져왔는데그 데이터는 숫자 코드로 되어있다(1 :사과 , 2: 포도) 숫자 코드는 보기 안좋으니까 글자로 바꾸려는데, 쿼리에서 조건문을 쓰
marobiana.tistory.com
https://redcow77.tistory.com/260
[Mysql] Mysql 조건문 - IF 문, CASE 문
Mysql의 IF ~ Else 조건문 (Mysql의 IF 문은 엑셀에서의 IF 함수와 동일합니다.) if ( 조건문, 참일때 값, 거짓일때 값) SELECT IF(required, '필수' '선택') AS '필수여부' FROM TABLE SELECT A.seq, IF(A.seq
redcow77.tistory.com
https://bramhyun.tistory.com/28
[MYSQL] DATE_FORMAT 함수 - 날짜 포맷/ 형식 지정하기
DATE_FORMAT 함수 SQL을 작성하다 보면, 시간과 날짜에 관련된 COLUMN들을 활용하는 경우가 종종 있습니다. 이번 글에서는 DATETIME 에 관련된 포맷과 DATE_FORMAT 함수에 관련하여 정리 해 보겠습니다. 이
bramhyun.tistory.com
https://devpouch.tistory.com/162?category=1019761
[SQL] NULL 값 검색하는 방법 (IS NULL, IS NOT NULL)
mysql에서 비교연산자를 통해서 데이터를 가져올 때는 WHERE절에 = 연산자를 써서 데이터를 가져올 수 있다. 하지만 NULL 값인 경우 아래와 같은 방법으로는 검색이 되지 않는다. NULL은 데이터가 아
devpouch.tistory.com
'문제 풀이 > SQL' 카테고리의 다른 글
[SQL/MySQL] [programmers] 즐겨찾기가 가장 많은 식당 정보 출력하기 (0) | 2023.03.27 |
---|---|
[SQL/MySQL] [Programmers] 루시와 엘라 찾기 (0) | 2023.03.24 |
[SQL/my sql] [programmers] 없어진 기록 찾기 (0) | 2023.03.11 |
[programmers] [SQL/MySQL] 재구매가 일어난 상품과 회원 리스트 구하기 (0) | 2023.03.04 |
[SQL] [programmers] 성분으로 구분한 아이스크림 총 주문량 (0) | 2023.02.14 |