230822 supabase postgreSQL view를 통해 통계 만들기
특정 열의 값에 따라 통계를 만들기 위해서는 group by 절을 사용할 수 있는데, javascript api에서는 group by절을 사용할 수 없다. VIEW를 직접 만들어서 VIEW 테이블에 대해 select를 하여 통계를 가져올 수 있다.
- 매칭 시스템을 만들고 있는 중이다. 사용자는 매칭이 끝나면 서로를 평가(리뷰)할 수 있다.
- 이를 위해서 테이블을 만들었다.
- profiles 테이블에는 사용자의 id를 포함한 사용자 데이터가 있고, role 열에는 사용자의 역할이 정의되어 있다. 'tutor' 또는 'student'이다.
- review 테이블에는 사용자에 대한 각각의 리뷰에 대한 데이터가 있고, reviewed_id를 통해 리뷰를 받은 사용자의 id값을 알 수 있다.
튜터에 대한 리뷰 데이터 통계를 가져오기 위해서
사용자 데이터 중 튜터 역할(role='tutor')인 사용자에 대해서 그룹화하여 리뷰 테이블의 리뷰 데이터의 수를 Count한다.
결론 적으로 튜터 사용자에 대한 리뷰 갯수를 가질 수 있다.
뷰 테이블 만들기
create view most_review_tutor as
select p.id, p.username, COUNT(r.id) as review_count
from profiles p
left join review r ON p.id = r.reviewed_id
group BY p.id, p.username
order BY review_count desc;
뷰 테이블 삭제하기
DROP VIEW IF EXISTS most_review_tutor;
'내일배움캠프' 카테고리의 다른 글
230824 sendbird React UIKit 커스텀 메시지 보내고 받기 (0) | 2023.08.24 |
---|---|
230823 sandbird react uikit으로 사용하기 (0) | 2023.08.23 |
230821 supabase query count (0) | 2023.08.21 |
230820 내일배움캠프 14주차 WIL (0) | 2023.08.20 |
230818 React Hydration (0) | 2023.08.18 |