# 대시보드 보고서 - 받은 좋아요 상위 사용자

**URL:** https://meta.discourse.org/t/dashboard-report-top-users-by-likes-received/293714
**Category:** Data & reporting
**Tags:** sql-query, dashboard-reports, dashboard-sql
**Created:** [2월 1, 2024, 12:21오전 UTC](https://meta.discourse.org/t/dashboard-report-top-users-by-likes-received/293714 "2024-02-01T00:21:49Z")
**Posts on this page:** 1
**Page:** 1

<div class="post-metadata">

### Author: ![SaraDev](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/saradev/32/335139_2.png) [@SaraDev](https://meta.discourse.org/u/SaraDev)
#### Post date: [2월 1, 2024, 12:21오전 UTC](https://meta.discourse.org/t/dashboard-report-top-users-by-likes-received/293714/1 "2024-02-01T00:21:49Z")

</div>

이것은 '좋아요 수 기준 상위 사용자 대시보드 보고서’의 SQL 버전입니다.

이 대시보드 보고서는 사이트 내 모든 게시물의 좋아요 수 합계를 기준으로 상위 사용자를 보여줍니다. 이 보고서는 특정 기간 내에 받은 좋아요 수를 집계하여 높은 참여도를 보이는 사용자를 식별하는 데 도움을 주며, 활성 멤버를 인정하고, 콘텐츠 품질을 평가하고, 사용자 참여 추세를 모니터링하며, 중개자 선정과 같은 커뮤니티 관리 결정을 내리는 데 활용됩니다.

```sql
--[params]
--date :start_date = 2024-01-01
--date :end_date = 2025-01-01

SELECT
ua.user_id AS user_id,
u.username as username,
COUNT(*) likes_received
FROM user_actions ua
INNER JOIN users u on ua.user_id = u.id
WHERE ua.created_at::date BETWEEN :start_date AND :end_date
AND ua.action_type = 2
GROUP BY ua.user_id, u.username, u.uploaded_avatar_id
ORDER BY likes_received DESC

```

### SQL 쿼리 설명

쿼리는 다음과 같이 작동합니다:

- **날짜 파라미터** : 쿼리는 보고서의 날짜 범위를 정의하는 `:start_date`와 `:end_date`라는 두 개의 파라미터를 받습니다. 두 날짜 파라미터 모두 `YYYY-MM-DD` 형식의 날짜를 받습니다.
- **데이터 선택** : 쿼리는 `user_actions` 테이블(`ua`)과 `users` 테이블(`u`)에서 사용자 ID와 사용자 이름을 선택합니다. 이 두 테이블은 `ua.user_id`가 `u.id`와 일치하는 조건으로 SQL의 `INNER JOIN` 명령을 사용하여 연결됩니다.
- **데이터 필터링** : `WHERE` 절은 지정된 날짜 범위 내에 해당하는 동작만 필터링하고, `was_liked` 유형의 동작만 고려합니다. 이 동작은 `action_type = 2`로 표현됩니다.
- **집계** : `COUNT(*)` 함수와 `GROUP BY` 절을 조합하여 결과를 `user_id`, `username`, `uploaded_avatar_id`별로 그룹화하고 각 사용자가 받은 좋아요 수를 집계합니다.
- **결과 정렬** : `ORDER BY` 절은 `likes_received` 기준으로 집계된 데이터를 내림차순으로 정렬하여, 가장 많은 좋아요를 받은 사용자가 보고서 상단에 위치하도록 합니다.

이 쿼리는 주어진 날짜 범위 내에서 받은 좋아요 수를 함께 나열한 사용자 목록을 생성하며, 가장 많은 좋아요부터 가장 적은 좋아요 순으로 정렬됩니다.

### 결과 예시

| user | username | likes\_received |
| --- | --- | --- |
| user1 | user1 | 748 |
| user2 | user2 | 324 |
| user3 | user3 | 308 |
| … | … | … |
