On the journey of

[SolveSQL] 첫 주문과 마지막 주문, 많이 주문한 테이블 찾기 본문

코딩테스트/SQL

[SolveSQL] 첫 주문과 마지막 주문, 많이 주문한 테이블 찾기

dlrpskdi 2023. 6. 12. 15:29

SolveSQL에서 그냥 풀 수 있는 문제들 중 카테고리를 살짝 바꿔봤다 :) 데이터리안 캠프 실전반에서 다는 아니고... 6문제 정도 공개했길래 도전!


 

1. 첫 주문과 마지막 주문 - https://solvesql.com/problems/first-and-last-orders/

 

solvesql

 

solvesql.com

Q. Brazilian E-Commerce Public Dataset By Olist 데이터셋은 브라질의 Olist Store 라는 쇼핑몰에서 수집한 데이터를 담고 있습니다. 그 중 olist_orders_dataset 테이블에는 쇼핑몰에서 상품을 구매한 고객, 주문 일자, 상품 도착 일자와 같은 주문 정보가 들어있습니다.

주문 일자를 나타내는 order_purchase_timestamp 컬럼을 통해 첫 주문 일자와 마지막 주문 일자를 알아보려고 합니다. 아래 두 컬럼을 포함하는 쿼리를 작성해주세요.

  • first_order_date - 첫 주문 일자 (예: 2018-01-01)
  • last_order_date - 마지막 주문 일자 (예: 2018-08-31)

A. Timestamp 컬럼 내에서 Min, Max를 활용해 값을 도출하자.

* YYYY-MM-DD 형식을 위해 STRFTIME 함수를 활용하려고 했는데.... 필요가 없었음.

* STRFTIME는 아래와 같은 형식으로 사용된다.

strftime(format, timestring, modifier, modifier, ...)

Timestring에 날짜와 시간을 나타내는 문자열을 지정하며, 각 함수마다 지정된 형식으로 반환된다.

  • Date 함수 : YYYY-MM-DD
  • Time 함수: HH:MM:SS
  • Datetime 함수: YYYY-MM-DD HH:MM:SS
  • Julianday 함수 : 'J' (율리우스 날짜)

SELECT
  date(MIN(order_purchase_timestamp)) AS first_order_date,
  date(MAX(order_purchase_timestamp)) AS last_order_date
FROM
  olist_orders_dataset

의외로 어렵지 않게 결과가 나왔다! AS만 잘 쓰면 됐던 문제 :)

2. 많이 주문한 테이블 찾기 - https://solvesql.com/problems/find-tables-with-high-bill/

 

solvesql

 

solvesql.com

Q. tips 테이블에는 식사 금액, 팁, 결제자 성별, 요일, 시간대 등 어느 레스토랑의 테이블 당 결제에 관련된 데이터가 들어있습니다. 식사 금액이 테이블 당 평균 식사 금액보다 더 많은 경우를 모두 출력하는 쿼리를 작성해주세요. 결과에는 tips 테이블에 있는 모든 컬럼이 포함되어야 합니다.

 

* tips 테이블 내 '평균식사금액'은 정의되어 있지 않기 때문에, where 조건문 안에 select문, from문을 한번 더 집어넣자. 한번 더 들어간 쿼리문 내에서는 avg를 정의하면 된다! : avg(total_bill)가 될 거고.

Select *
From tips
where total_bill > (select avg(total_bill) from tips)

조건 작성이 족움 빡셌지만 그래도 어려운 편은 아니었던 문항인 듯! :) SQLD 공부했으면 무난히 풀었을 거 같다.


그나저나 SolveSQL이 실전반 문제는 등록하지 않으면 못 봐서 그런가? 전체공개된 문제들이 막 엄청 어렵다 느낌은 없어서 daily 2문제보다 그냥 하루 4문제씩 풀어서 얼른 끝내고 프로그래머스든 백준이든 넘어가야겠다. 파이썬도 재개해야 하니까.....코테준비 뽜쟈 !