[英]SQL query - select max where a count greater than value
我有两个具有以下结构的表:
问题表
id int,
question text,
answer text,
level int
进度表
qid int,
attempts int,
completed boolean (qid means question id)
现在,我的问题是如何构建一个查询,以选择正确问题的数量大于30的最大级别。
我创建了此查询,但是它不起作用,我也不知道为什么。
SELECT MAX(Questions.level)
FROM Questions, Progress
WHERE Questions.id = Progress.qid AND Progress.completed = 1
GROUP BY Questions.id, Questions.level
Having COUNT(*) >= 30
我想在一个查询中使用它,因为我怀疑这是可能的,并且可能是最“优化”的查询方式。 谢谢您的帮助!
这种构造将起作用。 您可以找出细节。
select max(something) maxvalue
from SomeTables
join (select id, count(*) records
from ATable
group by id) temp on ATable.id = temp.id
where records >= 30
分步执行而不是将两个表联接在一起。 在内部选择中,找到正确回答了30次的问题(即问题ID)。 在外部选择中,找到相应的级别并获得最大值:
select max(level)
from questions
where id in
(
select qid
from progress
where completed = 1
group by qid
having count(*) >= 30
);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.