대시보드 보고서 - 전송된 이메일

이것은 발송된 이메일 대시보드 보고서의 SQL 버전입니다.

이 보고서는 지정된 날짜 범위 내에서 Discourse 플랫폼에서 발송된 이메일의 총 수를 매일 기준으로 보여줍니다. 이메일 활동을 모니터링하고, 추세를 파악하며, 이메일 시스템이 올바르게 작동하는지 확인하는 데 유용합니다.

-- [params]
-- date :start_date
-- date :end_date

SELECT
  DATE(created_at) AS date_sent,
  COUNT(*) AS total_emails_sent
FROM email_logs
WHERE created_at BETWEEN :start_date AND :end_date
GROUP BY date_sent
ORDER BY date_sent ASC  

SQL 쿼리 설명

해당 SQL 쿼리는 주어진 기간 동안 매일 발송된 이메일 수를 조회하도록 설계되었습니다. 쿼리의 단계별 설명은 다음과 같습니다.

매개변수

쿼리는 :start_date와 :end_date라는 두 개의 매개변수를 받아 사용자가 보고서를 위한 날짜 범위를 지정할 수 있도록 합니다. 두 날짜 매개변수 모두 YYYY-MM-DD 형식의 날짜를 허용합니다.

쿼리 분석

  • DATE(sent_at) AS date_sent: sent_at 타임스탬프에서 날짜 부분을 추출하고, 결과 컬럼을 date_sent로 이름 붙입니다.
  • COUNT(*) AS total_emails_sent: 각 그룹의 총 행(이메일) 수를 계산하고, 결과를 total_emails_sent로 이름 붙입니다.
  • FROM email_logs: 이 절은 데이터가 이메일 발송의 각 인스턴스를 기록하는 email_logs 테이블에서 가져와짐을 나타냅니다.
  • WHERE sent_at BETWEEN :start_date AND :end_date: 이 절은 sent_at 타임스탬프가 지정된 날짜 범위에 속하는 기록만 포함하도록 데이터를 필터링합니다.
  • GROUP BY date_sent: 이 절은 이메일이 발송된 날짜별로 결과를 그룹화합니다. 이는 COUNT 함수가 하루 단위의 합계를 계산하는 데 필요합니다.
  • ORDER BY date_sent ASC: 이 절은 date_sent 컬럼 기준으로 결과를 오름차순으로 정렬하여, 보고서가 범위 내에서 가장 오래된 날짜부터 가장 최신 날짜까지 데이터를 표시하도록 보장합니다.

결과 예시

date_sent total_emails_sent
2023-11-19 264
2023-11-20 932
2023-11-21 678
2023-11-22 637
2023-11-23 369
… …

이메일 로그의 기본 보관 기간은 90일이지만, delete email logs after days 관리자 설정을 통해 조정할 수 있습니다(0으로 설정하면 무기한 보관).

지난해 데이터를 조회할 수 없는 이유를 궁금해하신 분들을 위해 참고드립니다. :slight_smile: