본문 바로가기
Daily Review

SQL을 사용한 레스토랑 판매의 탐색적 데이터 분석(EDA)

by data-analyst-luke 2022. 8. 30.
반응형

이 프로젝트에서는 SQL을 사용하여 레스토랑 판매 데이터 세트에 대해 EDA를 수행합니다. 데이터 세트는 Kaggle에서 다운로드하여 SQL Server Management Studio로 가져왔습니다. 이전 프로젝트에서 레스토랑 비즈니스에 대한 정보를 표시했으므로 이를 위해 SQL을 사용하여 동일한 분석을 수행할 것입니다. 시작하자.

 

다음 질문에 답하겠습니다

1. 총 주문 금액은 얼마입니까?

2. 판매된 상품의 총 수량은 얼마입니까?

3. 평균 배송 시간은 어떻게 됩니까?

4. 음식에 대한 평균 등급은 무엇입니까?

5. 가장 많이 주문한 고객은?

6. 가장 많이 주문한 식당은?

7. 고객이 자주 사용하는 결제 수단은 무엇입니까?

8. 가장 좋아하는 요리는?

9. 하루 중 고객이 가장 많이 주문한 시간은?

10. 각 구역에 몇 명의 고객이 있었습니까?

11. 가장 많은 주문을 받은 지역

 

데이터 세트 가져오기.

데이터베이스 생성.

데이터베이스가 만들어지고 "레스토랑 프로젝트"라는 이름이 지정되었습니다. 데이터 세트는 두 개의 테이블로 구성되어 있으므로 데이터베이스 내에 두 개의 별도 테이블을 만들었습니다. 수입 과정의 혹독함을 설명하지 않겠습니다.

 

 

데이터 정리

데이터 세트는 이미 어느 정도 깨끗했으며 데이터 세트에 약간의 변경 사항이 있었습니다.

 

날짜 열

주문 날짜 열의 형식은 날짜/시간입니다. 분석에 필요할 것이기 때문에 변환 기능을 사용하여 시간을 추출했습니다. 날짜는 모두 동일하므로(2022년 1월 1일에 발생) Alter 및 Drop 절을 사용하여 테이블에서 날짜 열을 삭제했습니다.

 

Null 값 확인

데이터 세트에 null 값이 있는지 확인해야 했습니다.

 

보시다시피 데이터에는 null 값이 없습니다. 따라서 분석을 진행할 수 있습니다.

 

집계 함수를 사용한 기본 계산

 

총 주문량은 얼마입니까?

판매된 품목의 총 수량은 얼마입니까?

평균 배송 시간은 어떻게 됩니까?

음식에 대한 평균 등급은 무엇입니까?

 

 

두 테이블 조인

첫 번째 테이블에는 주문 정보가 포함되어 있고 두 번째 테이블에는 레스토랑 정보가 포함되어 있습니다. 분석을 수행하려면 두 테이블을 병합해야 합니다.

조인 절을 사용하여 두 테이블에 고유한 열을 사용하여 두 테이블을 함께 조인할 수 있었습니다.

 

 

이제 테이블이 조인되었습니다.

 

CTE 만들기

조인된 테이블을 쉽게 참조하기 위해 공통 테이블 표현식(CTE)을 만들었습니다. n/b CTE로 작업할 때 쿼리를 작성하기 전에 항상 CTE 코드를 먼저 실행해야 합니다.

 

각 구역에 몇 명의 고객이 있었습니까?

 

이 질문에 답하기 위해 고유한 고객 수를 계산하고 구역별로 그룹화해야 했습니다. group by 절과 함께 고유한 집계 함수를 사용합니다.

 

 

구역 B와 구역 D에는 동일한 수의 고객이 있었습니다.

 

주문이 가장 많은 식당은?

이에 답하기 위해 주문 금액을 합산하여 식당 이름별로 그룹화했습니다.

 

 

주문건수는 Veer Restaurant이 가장 높았고 동굴 호텔이 그 뒤를 이었습니다.

 

고객이 자주 사용하는 결제 수단은 무엇입니까?

이제 흥미로워집니다. 결제수단은 현금, 신용카드, 체크카드로 하였다. 신용카드와 체크카드는 모두 카드 결제이기 때문에 case when 문을 사용하여 현금과 카드로만 분류하기로 했습니다.

 

 

결과에 따르면 고객은 현금보다 카드로 더 많이 지불했습니다.

 

가장 좋아하는 요리는 무엇입니까?

 

 

하루 중 고객이 가장 많이 주문한 시간은?

그러려면 주문 시간을 오전, 오후, 밤으로 분류해야 했습니다. 이는 case when 문을 사용하여 수행되었습니다. 분석을 위해 오후 12시에서 17시 59분 사이의 시간을 오후로 그룹화했습니다. 밤은 18:00 및 23:59, 아침은 오전 12:00 ~ 오전 11:59입니다. 그런 다음 주문이 이루어진 시간까지 주문 빈도를 계산했습니다.

오후 주문량이 가장 많았다. 이것은 다른 요인들 중에서 점심과 러시아워 때문입니다.

 

가장 많은 주문을 받은 구역은?

 

 

요약

이 프로젝트는 학습 및 연습 목적이었습니다. 기본 SELECT, WHERE AND FROM 문과 같은 다양한 SQL 문을 사용하고 JOIN 문을 사용하여 두 테이블을 결합하여 조금 더 발전했습니다. 데이터 세트에서 통찰력을 추출하기 위해 하위 쿼리를 사용하여 조인된 테이블의 CTE를 만들고 다른 쿼리와 결합했습니다.

 

반응형

댓글