2016-11-22 57 views
0

为了生成出勤率低于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); 
+0

的可能的复制[?有没有\ _Value为MySQL 5.6功能(http://stackoverflow.com/questions/37089347/is-there- any-value-capability-for-mysql-5-6) – e4c5

+0

否从子句,没有分组,没有示例数据。 –

回答

0

SELECT都没有FROM子句。

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

无论如何,我不确定AVG函数应该完成什么。你想要平均什么?您是否试图使用AVG作为将0和1变成百分比的棘手方式?如果是这样,那么现在的定义是什么?如果它是0或1的整数,则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