# 최근 7일간의 이메일 도메인별 사용자 게시물

**URL:** https://meta.discourse.org/t/user-posts-by-email-domain-over-last-7-days/304560
**Category:** Data & reporting
**Tags:** sql-query
**Created:** [4월 19, 2024, 3:04오전 UTC](https://meta.discourse.org/t/user-posts-by-email-domain-over-last-7-days/304560 "2024-04-19T03:04:41Z")
**Posts on this page:** 1
**Showing post:** 4

<div class="post-metadata">

### Author: ![JammyDodger](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/jammydodger/32/254611_2.png) [@JammyDodger](https://meta.discourse.org/u/JammyDodger)
#### Post date: [4월 19, 2024, 3:51오전 UTC](https://meta.discourse.org/t/user-posts-by-email-domain-over-last-7-days/304560/4 "2024-04-19T03:51:08Z")

</div>

그룹 가입 때문에 숫자가 부풀려지는 것 같아 (또한 모든 사용자가 신뢰 수준에 따라 자동 그룹에 속해 있어서 약간 일관성이 떨어지기도 해). 이 부분을 제거하고, 주제, 게시물, 개인 메시지에 초점을 맞출 수 있도록 몇 가지 조정을 추가할 수 있을 것 같아.

한번 시도해 볼게.

* * *

이런 식으로 하면 어떨까:

```sql
-- [params]
-- string :interval = 7 days

SELECT
  split_part(ue.email, '@', 2) AS email_domain, -- 이메일의 도메인 부분을 추출
  COUNT(p.id) AS "Total Posts",
  COUNT(p.id) FILTER (WHERE p.post_number = 1 AND t.archetype = 'regular') AS "Topics",
  COUNT(p.id) FILTER (WHERE p.post_number > 1 AND t.archetype = 'regular') AS "Posts",
  COUNT(p.id) FILTER (WHERE t.archetype = 'private_message') AS "Personal Message posts"
FROM posts p
  JOIN user_emails ue ON p.user_id = ue.user_id AND ue.primary = TRUE -- 기본 이메일을 사용하도록 보장
  JOIN topics t ON t.id = p.topic_id
WHERE p.created_at >= CURRENT_DATE - INTERVAL :interval -- 매개변수에 따라 지난 x 기간 동안의 게시물을 필터링
  AND p.user_id > 0 -- 시스템 사용자(시스템 및 봇) 제외
  AND p.deleted_at ISNULL
  AND t.deleted_at ISNULL
  AND p.post_type <> 3
GROUP BY email_domain
ORDER BY "Total Posts" DESC -- 게시물 수 기준 내림차순 정렬

```

---

_[View the full topic](https://meta.discourse.org/t/user-posts-by-email-domain-over-last-7-days/304560)._
