본문 바로가기
DATABASE

Q. 쇼핑몰 리뷰 관리 & 조회하기

by nyang2 2023. 11. 23.

 

알고 있어야 하는 내용 )

  • 컬럼명 사이에 공백이 포함된 경우 ` ` 로 컬럼명을 묶어주어야 한다.
  • floor() : 소수점 첫째자리에서 버림을 해주는 버림함수이다.
  • limit : 결과값의 개수를 제한해준다.
  • sum(1) : 일반적인 sum 함수와는 다르다. 모든 행에 1을 적용해 더해진 값을 알려준다.
  • count(*) : 테이블에서의 행의 수를 직접적으로 집계해준다. 전체 몇개에 데이터가 있는지 !

 

필요 데이터 :

데이터 모두 classicmodels.dataset2

상품의 소분류 ➜ Department Name

리뷰의 평점   Rating

나이 ➜ Age

 

조회방법

 

1. 상품의 소분류 별로 평점의 평균을 조회해보자

해석
상품의 소분류인 Department Name 컬럼명에는 공백이 포함되어있기 때문에 ` ` 안에 묶어주어야한다.
소분류 별로 조회해야하기 때문에 `Department Name` 으로 group by 를 이용해 그룹화를 해준다.
rating 의 평균을 구하기 위해 avg() 집계함수를 사용한다.

결과
상품의 소분류인 Trend 인 데이터의 평점이 낮은 것으로 판단된다.

 

 

2. `Department Name` 이 Trend 인 데이터 중에 평점이 3점 이하인 데이터를 조회해보자

해석
where 조건절을 이용해서 조회 !

 

 

3-1. (2) 번의 데이터를 연령대별로 분류해보자 (case-when문)

해석
case when 문을 이용하여
0~9 : 00
10~19 : 10
20~29 : 20
30~39 : 30
40~49 : 40
50~59 : 50
60~69 : 60
70~79 : 70
80~    : 80
와 같이 연령대별로 분류해주었다.
이때 연령대의 컬럼명은 ageband 로 변경해주었다.

 

 

3-2 . (2) 번의 데이터를 연령대별로 분류해보자 (버림함수)

해석
floor() 함수는 소수점 첫째자리에서 버림해주는 함수이다.
floor() 함수를 사용하여 연령대별로 분류하면 case-when 문으로 작성하는 것보다 간결하게 작성할 수 있다.

 

 

4. (3) 번의 내용, Trend의 평점이 3점 이하인 리뷰의 연령분포를 테이블화 해주기 

테이블명 : ct_001

해석
연령대별 분포를 알기 위해 
연령대별로 그룹화를 해주고 count(*) 를 사용하여 몇개의 데이터가 있는데 행의 합을 구해주면 된다.

그리고 ct_001 의 이름으로 테이블화 해준다.

 

이때 거의 모든 30대가 낮은 평점을 준다고 단정지을 수 없다. 왜냐하면 10000명 중에 29명이 준 거일 수도 있고 29명 중에 29명이 준 거일 수도 있기 때문이다.

따라서 비율로 확인을 해야한다.

 

 

5. 비율을 구하기 위해 Trend 를 구매한 모든고객의 연령대별 분포를 조회하고 테이블화 해주기

테이블명 : ct_002

해석
(4) 번 내용에서 where 조건절만 수정해주면 된다.

 

 

6. (4), (5) 의 내용으로 리뷰 비율을 조회해보자

해석
비율을 구하기 위해 ( 3점만 준 사람 수 / 전체 수 ) 를 구해준다.
그리고 컬럼명은 ct_rt 로 변경해준다.

결과
Trend 를 구매한 사람 중 50대가 가장 평점을 낮게 준 것으로 판단된다.

 

 

7. Trend 를 구매한 50대 중, 평점을 3점 이하로 준 고객의 리뷰를 조회해보자

이때, 상위 6개만 출력해라

해석
where 절에 조건을 넣어주고
상위 6개만 출력하기 위해 limit 6 을 사용한다.