[solvesql] 첫 주문과 마지막 주문


문제 출처

첫 주문과 마지막 주문

문제 링크
olist_orders_dataset 테이블에서 첫 주문 일자마지막 주문 일자를 조회하는 쿼리를 작성하면 된다.


문제 풀이

쿼리문은 ‘이것이 정답이다!’라고 하는 것은 없다고 생각한다. 그래서 다양한 방법으로 결과를 추출할 수 있기 때문에, 가능한 쿼리문을 몇개 적어보았다.

olist_orders_dataset 테이블에서 order_purchase_timestamp 칼럼의 MIN(최소), MAX(최대) 함수를 사용하고 yyyy-mm-dd 형식으로 구성하여 출력 예시의 컬럼으로 조회하면 된다.

1번 - MySQL

select left(min(order_purchase_timestamp),10) as first_order_date
      ,left(max(order_purchase_timestamp),10) as last_order_date
from olist_orders_dataset

2번 - MySQL, SQLite

select date(min(order_purchase_timestamp)) as first_order_date
      ,date(max(order_purchase_timestamp)) as last_order_date
from olist_orders_dataset

3번 - SQLite

select strftime('%Y-%m-%d',min(order_purchase_timestamp)) as first_order_date
      ,strftime('%Y-%m-%d',max(order_purchase_timestamp)) as last_order_date
from olist_orders_dataset

🚀 깨달은 것

strftime() 날짜 함수는 이번에 처음 알게 되었는데, 지정된 형식에 따라 dattime값을 형식화하는데 사용된다.

Format Description

%d | day of the month: 01-31
—-|——————————– %f | fractional seconds: SS.SSS
%H | hour: 00-24
%j | day of the year: 001-366
%J | Julian day number
%m | month: 01-12
%M | minute: 00-59
%s | seconds since 1970-01-01
%S | seconds: 00-59
%w | day of week 0-6 with Sunday==0 %W | week of the year: 00-53
%Y | year: 0000-9999
%% | %

Format이 위와 같기 때문에 datetime 변수를 년-월-일로 하기 위해 다음과 같이 사용하였다.

strftime('%Y-%m-%d', datetime변수명)





© 2020.02. by ysjang0926

Powered by theorydb