solvesql - SQL문제

solvesql - 레스토랑 웨이터의 팁 분석(Round, Group By)

정차노 2024. 10. 27. 18:44

문제 출처 : https://solvesql.com/problems/tip-analysis/

 

https://solvesql.com/problems/tip-analysis/

 

solvesql.com

 

 

 

1. 문제

난이도2, 정답률 46.19% 

tips 테이블에는 식사 주문 금액, 팁, 결제자 성별, 요일, 시간대 등 음식점의 방문 고객들과 관련된 데이터가 들어있습니다.

음식점의 요일, 시간대 별 패턴을 분석해보고자 합니다. 구체적으로는 각 요일의 시간대별 평균 팁은 얼마인지, 평균 일행 수는 몇 명인지 확인하고자 합니다. 평균 팁과 평균 일행 수는 소수점 아래 셋째 자리에서 반올림 해 둘째 자리까지 출력하고, 결과 데이터가 요일, 시간대의 알파벳 순으로 정렬되도록 쿼리를 작성해주세요. 결과 데이터에는 아래 4개의 컬럼이 들어가야 합니다.

 

  • day - 요일
  • time - 시간대
  • avg_tip - 평균 팁
  • avg_size - 평균 일행 수

 

2. 조건

  • 각 요일의 시간대별 평균팁, 평균 일행수 출력(SELECT)
  • 평균 결과값들은 소수점 셋째 자리에서 반올림하여 출력(SELECT)
  • 요일과 시간대별을 기준으로 집계(GROUP BY)

 

3. 쿼리

-- 각 요일의 시간대별 평균 팁, 평균 일행수
SELECT
     day
    ,time
    ,ROUND(AVG(tip), 2)   as avg_tip
    ,ROUND(AVG(size), 2)  as avg_size
FROM tips
GROUP BY day, time

해당 문제는 각 요일과 시간대를 동시에 Group By하여 결과를 구해야 하는 문제이다. 이런식으로 Group By에 day, time 두가지 필드값을 넣게되면 해당 두개의 값을 기준으로 집계를 진행하게 되며 "월요일 오전", "월요일 점심" 등의 값으로 집계를 하게 된다.

평균은 AVG, 반올림은 ROUND로 구하면 된다.

 

4. 실행 결과