mysql查询基于一定条件的数据分组

2ul0zpep  于 2021-06-25  发布在  Mysql
关注(0)|答案(1)|浏览(275)

我正在做一个基于测验的项目,用户访问并进行测验。我想列出的用户谁必须出现在5个模块的测验中,每失败计数。我把这个弄对了。现在,如果一个用户再次出现在5个测验中的任何一个,并且通过了它,那么他/她不能被包括在前面提到的计数中。
我对所有5个模块中出现并失败的用户数的查询是,

SELECT count(DISTINCT module_id) as module_id from tbl WHERE user_id = $userId AND cleared = 0,

其中user\u id是用户的id,如果失败则清除为0,如果通过则清除为1。尽管上面的查询统计用户通过的模块数。我在函数中使用它,然后在if语句中进行比较。我只想弄清楚我能在这里带来什么变化,这样如果用户传入任何模块,它们就不应该包含在这个模块中。我试过了,但没有得到正确的答案。任何建议都会有帮助。

bvn4nwqk

bvn4nwqk1#

使用条件聚合:

SELECT user_id
FROM tbl
GROUP BY user_id
HAVING COUNT(DISTINCT module_id) = 5 AND SUM(cleared) = 0;
--             ^^ appeared in all 5 modules        ^^ and failed them all

如果要将上述查询限制为仅一个或几个用户,则可以将 WHERE 条款。

相关问题