如何纠正错误"无效使用群组功能"?

时间:2016-11-22 11:32:48

标签: mysql database database-design

要生成出勤率低于75%的学生USN列表以及他们缺少的出勤率和主题代码,当我运行以下查询时,我收到错误。我哪里做错了?你能纠正吗?

select attendance.usn,avg(attendance.ispresent),schedule.subcode
where avg(attendance.ispresent) in 
(select avg(attendance.ispresent) having avg(attendance.ispresent)<0.75);

1 个答案:

答案 0 :(得分:0)

SELECT都没有FROM子句。

内部查询使用HAVING子句,但这没有意义,因为没有GROUP BY,所以它只生成一条记录。

我不知道AVG功能应该在这里完成什么。你想要平均的是什么?您是否尝试将AVG用作将0和1转换为百分比的棘手方法?如果是这样,ispresent的定义是什么?如果它是0或1的int,则avg(ispresent)将为0,除非所有的ispresent都是1。

如果这意味着什么,你需要在外部选择上使用GROUP BY。

也许你想要的是:

select usn, subcode, avg(cast(ispresent as float))
from attendance
join schedule on ???
group by usn, subcode
having avg(cast(ispresent as float))<.75