On the journey of

[SolveSQL] 레스토랑의 요일별 VIP, 레스토랑의 요일별 매출 요약 본문

코딩테스트/SQL

[SolveSQL] 레스토랑의 요일별 VIP, 레스토랑의 요일별 매출 요약

dlrpskdi 2023. 6. 13. 14:27

datarian SQL 데이터 분석 캠프 실전반

이 카테고리에서 문항을 2개 더 가져왔다. 삘 받은 지금 아주그냥 go answer go 해줘야지 ㅎㅁㅎ

 

1. 레스토랑의 요일별 VIP - https://solvesql.com/problems/restaurant-vip/

 

solvesql

 

solvesql.com

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

 

A. '요일별' 최대 금액 내역을 출력해야 하므로, Total_bill 최대값을 조회하되 day 기준 group by가 진행되어야 한다. 즉, Where [조건] 에서, 조건 : total_bill 가 in( Max(total_bill) from tips(테이블명) group by day 라고 할 수 있다. 한번 다듬었으니까 바로 쿼리문 쓰기!

SELECT *
FROM tips
WHERE total_bill IN(SELECT MAX(total_bill) FROM tips GROUP BY day)

가지고 있는 데이터(금토일목)에 대해 Max(total_bill)와 결제자 정보가 출력됐다.

 

2. 레스토랑의 요일별 매출 요약 - https://solvesql.com/problems/sales-summary/

 

solvesql

 

solvesql.com

Q. tips 테이블에는 식사 금액, 팁, 결제자 성별, 요일, 시간대 등 어느 레스토랑의 테이블 당 결제에 관련된 데이터가 들어있습니다. 이 레스토랑의 요일별 매출액의 평균을 계산해주세요. 매출액 평균은 소수점 아래 셋째 자리에서 반올림하여 둘째 자리까지 표시되어야 합니다.

 

A. 반올림해서 2자리를 표현해야 하므로, round(매출액평균,2)가 될 것이고, 매출액 평균은 avg(매출액)으로 계산하면 됨. 추가적으로 '요일별' 이므로 1번과 마찬가지로 group by day 조건절을 추가한다. 그리고 원 데이터 = 테이블 당 결제에 관련된 데이터이므로 '쿼리문 속 쿼리문'을 통해 매출액 계산할 원데이터의 범위를 좁혀 준다.

select
  round(avg(bill), 2)
from
  (select day,sum(total_bill) bill
    from
      tips
    group by day
  )

끝!

SQL은 결과 쿼리가 참 깔끔해서 좋아 (?)