我正在建立一个调查系统
客户端A可能有用户[1,2,3]。 现在有一个表格 user_completions ,其中显示了哪些用户完成了我的调查。
users table
+----+-----------+
| id | client_id |
+----+-----------+
| 1 | 1 |
| 2 | 1 |
+----+-----------+
user_completions table
+---------+-----------+
| user_id | survey_id |
+---------+-----------+
| 1 | 1 |
| 2 | 2 |
+---------+-----------+
如何(在一个查询中)查看user_completion表中有多少用户记录,并按调查分组,并且仅针对当前客户
所需的结果看起来像
+-----------+-------+-----------------------+
| survey_id | users | num_persons_completed |
+-----------+-------+-----------------------+
| 1 | 2 | 1 |
| 2 | 2 | 1 |
+-----------+-------+-----------------------+
答案 0 :(得分:1)
我认为您在问题中缺少几个表提及,但是如果您确实只有这两个表,则可以通过以下查询来实现:
select tmp.survey_id, count(distinct tmp.user_id) completed,
(select count(distinct id) from users where client_id = 1) users
from
(select t1.*, t2.*
from users t1
join user_completions t2
on t1.id = t2.user_id
where t1.client_id = 1
)tmp
group by tmp.survey_id