# 由普通用户和工作人员解决的议题

**URL:** https://meta.discourse.org/t/topics-solved-by-regular-users-and-staff/275127
**Category:** Data & reporting
**Tags:** solved, sql-query
**Created:** [2018 年4 月 16 日 16:41 UTC](https://meta.discourse.org/t/topics-solved-by-regular-users-and-staff/275127 "2018-04-16T16:41:44Z")
**Posts on this page:** 1
**Page:** 1

<div class="post-metadata">

### 作者： ![Jp\_Robotshop](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/jp_robotshop/32/74100_2.png) [@Jp\_Robotshop](https://meta.discourse.org/u/Jp_Robotshop)
#### 发布日期： [2018 年4 月 16 日 16:41 UTC](https://meta.discourse.org/t/topics-solved-by-regular-users-and-staff/275127/1 "2018-04-16T16:41:44Z")

</div>

> [@simon](#):
>
> （可能有一种方法可以将此查询与工作人员查询结合起来。）

确实如此 🙂 我有点挣扎，但终于找到了让它生效的方法。所以，请查收！

```
-- [参数]
-- int :months_ago = 0

WITH query_period AS (
SELECT
date_trunc('month', CURRENT_DATE) - INTERVAL ':months_ago months' as period_start,
date_trunc('month', CURRENT_DATE) - INTERVAL ':months_ago months' + INTERVAL '1 month' - INTERVAL '1 second' as period_end
)

SELECT
t.category_id,

SUM (CASE WHEN (u.admin = 'false' OR u.moderator = 'false') THEN 1 ELSE 0 END) AS "由会员解决",
SUM (CASE WHEN (u.admin = 't' OR u.moderator = 't') THEN 1 ELSE 0 END) AS "由工作人员解决"

FROM user_actions ua
JOIN topics t
ON t.id = ua.target_topic_id
JOIN query_period qp
ON ua.created_at >= qp.period_start
AND ua.created_at <= qp.period_end
JOIN users u
ON u.id = ua.user_id
WHERE t.category_id = ANY ('{[列表类别 ID]}'::int[])
AND ua.action_type = 15

GROUP BY t.category_id ORDER BY t.category_id ASC

```
