AI 트리아지 자동화에서 보고된 스팸 플래그 통계

해당 시간 동안 @system이 생성한 스팸 플래그에 대해 동의하거나 반대표를 던진 기록이 없어서 이러한 오류가 발생합니다.
쿼리는 조건을 충족하는 플래그의 총 수로 나누려고 시도합니다. 이 경우 그 값이 0이므로 오류가 발생합니다.
쿼리가 결과값을 반환하도록 하려면 NULLIF를 사용하여 해당 조건을 확인하면 나누기 대상이 없을 때 NULL을 반환합니다.

-- [params]
-- date :start_date = 2025-01-01
-- date :end_date = 2025-05-30

SELECT 
    COUNT(*) AS total_flags,
    COUNT(*) FILTER (WHERE r.status = 1) AS approved_flags,
    COUNT(*) FILTER (WHERE r.status = 2) AS rejected_flags,
    ROUND(100.0 * COUNT(*) FILTER (WHERE r.status = 1) / NULLIF(COUNT(*), 0), 2) AS approved_percentage,
    ROUND(100.0 * COUNT(*) FILTER (WHERE r.status = 2) / NULLIF(COUNT(*), 0), 2) AS rejected_percentage
FROM 
    reviewables r
JOIN 
    post_actions pa ON pa.post_id = r.target_id AND r.target_type = 'Post'
WHERE
    pa.post_action_type_id = 8 -- 스팸 ID (스팸으로 표시 및 게시물 숨김)
    AND r.created_at BETWEEN :start_date AND :end_date
    AND r.status IN (1, 2) -- 승인 및 거부 플래그
    AND r.created_by_id = -1 -- 시스템 사용자 ID