On the journey of

[SolveSQL] 최고의 근무일을 찾아라, 지역별 주문의 특징 본문

코딩테스트/SQL

[SolveSQL] 최고의 근무일을 찾아라, 지역별 주문의 특징

dlrpskdi 2023. 6. 20. 19:33

1. 최고의 근무일을 찾아라 - https://solvesql.com/problems/best-working-day/

 

solvesql

 

solvesql.com

Q. Waiter's Tips 데이터셋에는 식사 금액, 팁, 결제자 성별, 결제 요일 등 레스토랑 손님들의 계산 정보가 들어있습니다. 이 레스토랑에 근무하는 서버는 팁을 많이 받을 수 있는 날 하루를 골라 근무하고 싶습니다.

요일별로 팁 총액을 집계하고 팁이 가장 많았던 요일과 그날의 팁 총액을 출력하는 쿼리를 작성해주세요.

결과 데이터는 아래 컬럼을 포함해야 합니다.

  • day - 요일
  • tip_daily - 요일 별 팁 총액

A. Limit 조건제어문은 반환된 결과의 행 개수(출력 개수)를 제한하기 위한 문법이다. 여기서는 '하루만' 근무하고 싶다고 했으니 가장 팁을 많이 주는 하루만 답으로 나오게끔, limit 1을 추가했다. 

Select ~~
From ~~
Order by ~~ Where ~~
Limit 3 #select문으로 반환된 결과의 출력 개수 제한 : 3개 열만 출력한다
Limit 10,3 : 10행부터 3개 행만 출력한다

Answer

select day, sum(tip) as tip_daily
from tips
group by day
order by tip_daily desc
limit 1

그러면 결과가 아래와 같이 나온다.

토요일만 근무하시면 됩니다 ~

 

2. 지역별 주문의 특징 - https://solvesql.com/problems/characteristics-of-orders/

 

solvesql

 

solvesql.com

Q. US E-Commerce Records 2020 데이터셋은 미국 이커머스 웹사이트의 판매 데이터 입니다. records 테이블은 주문 번호, 주문 날짜, 주문 지역, 카테고리 등 주문의 상세 정보를 담고 있습니다. 이 데이터를 이용하여 미국의 각 지역별로 어떤 카테고리의 상품이 많이 판매되는지 알아보려고 합니다. region, category 별 주문량을 계산해 출력하는 쿼리를 작성해주세요.

결과 데이터 형식

결과 데이터는 아래와 같은 테이블 형태로 출력되어야 하고, Region 컬럼 기준 오름차순으로 정렬되어 있어야 합니다.

결과 데이터의 각 컬럼은 다음과 같은 의미를 갖습니다.

  • Region - 주문 지역
  • Furniture - 해당 지역 내 가구(’Furniture’) 주문 수
  • Office Supplies - 해당 지역 내 오피스 물품(’Office Supplies’) 주문 수
  • Technology - 해당 지역 내 전자기기(’Technology’) 주문 수

칼럼이 많기에 정신을..똑띠 차려야 한다 :) 또한, case를 통해 조건을 추가하고, order_id의 중복값이 있기 때문에 이를 제거하는 구문을 추가해 줘야 한다.

SELECT Region, 
SUM(case when category = 'Furniture' then orders end) 'Furniture',
SUM(case when category = 'Office Supplies' then orders end) 'Office Supplies',
SUM(case when category = 'Technology' then orders end) 'Technology'


FROM (SELECT region Region, category, COUNT(DISTINCT order_id) orders
   FROM records
   GROUP BY region, category) records1

GROUP BY region
ORDER BY region;

case when ~~ 해서 카테고리별 조건을 추가하는 것이 많이 번거로운 문항이었다...

그래도 무사 출력 완 :-)


주말 좀전부터 이런저런 일로 정신없어서 며칠 쉬었더니 SQL 감 훅 떨어진게 느껴진다....다시 아자아자...