@SQL 코트카타
38번 - 조건별로 분류하여 주문상태 출력하기
FOOD_ORDER 테이블에서 5월 1일을 기준으로 주문 ID, 제품 ID, 출고일자, 출고여부를 조회하는 SQL문을 작성해 주세요. 출고여부는 5월 1일까지 출고완료로 이후 날짜는 출고 대기로 미정이면 출고미정으로 출력해 주시고, 결과는 주문 ID를 기준으로 오름차순 정렬해 주세요.
select order_id,
product_id,
date_format(out_date, '20%y-%m-%d') out_date,
case when date_format(out_date, '%m-%d') <= '05-01' then '출고완료'
when date_format(out_date, '%m-%d') > '05-01' then '출고대기'
else '출고미정' end '출고여부'
from food_order
order by 1
case when 문으로 해결
- 조회 : order_id, product_id, out_date, case when 절을 통한 출고여부
- date_format을 이용하여 뽑아낼 날짜 형식 지정하기
- case when 절을 이용하여 출고여부 정해주기
- 순서 : 결과는 주문 ID를 기준으로 오름차순으로 정렬이기 때문에 order_id가 첫 번째 순서로 있으니까 order by 1로 지정
39번 - 성분으로 구분한 아이스크림 총 주문량
상반기 동안 각 아이스크림 성분 타입과 성분 타입에 대한 아이스크림의 총주문량을 총주문량이 작은 순서대로 조회하는 SQL 문을 작성해 주세요. 이때 총주문량을 나타내는 칼럼명은 TOTAL_ORDER로 지정해 주세요.
select i.ingredient_type ingredient_type,
sum(f.total_order) total_order
from first_half f inner join icecream_info on f.flavor=i.flavor
group by 1
order by 2
INNER JOIN으로 해결
- 조회 : i.ingredient_type, f.total_order
- flavor로 inner join 결합
- sum 함수를 이용하여 총 주문량 구하기
- group by 절을 통해 각 아이스크림 성분타입 그룹 지정
- 순서 : 총주문량이 작은 순서대로 조회하기 때문에 오름차순으로 설정
38번 문제는 고민을 좀 했다 date_format 이란 걸 강의 때 배웠던 것 같은데 너무 오랜만에 보기도 하고 저런 게 있는지 까먹고 있었다 ㅋㅋㅋ... 그래서 나는 처음에 substr을 이용해서 풀려고 했지만 결국엔 case when 절을 쓸 때 case when 절에도 써야 한다는 걸 몰랐기 때문에 다른 사람들의 답변을 보고 문제를 다시 풀 수 있었다. 여기서 의문점은 왜 % y절을 썼을 때 2022가 바로 안 나오고 22만 나오는지 궁금하다 튜터님께 여쭤봐야 할 것 같다.
>> 여쭤본 결과
1. SQL은 일반적으로 대소문자 문법에 영향을 주진 않음
2. date_format 함수 같은 경우는 y는 두자리연도, Y는 네 자리 연도를 출력
**다음에 풀 때는 '20%y' 가 아닌 더 쉽게 '%Y'로 하면 될 것 같다
39번은 문제보고 바로 쉽게 풀 수 있었다. 이제는 이 정도 문제 난이도는 나한테 크게 어렵게 다가오지 않는 것 같다. 괜히 내가 SQL 공부를 그래도 잘하고 있구나라는 생각 때문에 뭔가 뿌듯했다!! 내일 문제도 내일모레 문제도 다 잘 풀 수 있었으면 좋겠다 :)
'CODEKATA' 카테고리의 다른 글
20240701 SQL 코드카타 41번, 42번, 43번 (0) | 2024.07.01 |
---|---|
20240628 SQL 코드카타 40번 (1) | 2024.06.30 |
20240625/ SQL 코드카타 37번 (0) | 2024.06.25 |
20240624 본 캠프 시작(SQL 코드카타34번~36번) (0) | 2024.06.24 |
20240621(금) - SQL 알고리즘 33번 문제(상품 별 오프라인 매출 구하기) (0) | 2024.06.21 |