select studentid,
sum(score) 'Total',
avg(IF(score>85)) 'Average',
max(score) 'Maximum',
min(score) 'Minimum'
from results
group by studentid;
错误消息:
您的SQL语法有误;检查手册 对应于您的MariaDB服务器版本,以使用正确的语法 '))'平均'附近
max(score)'Maximum',
答案 0 :(得分:2)
您没有正确使用if()
函数-您不应该使用单引号对结果集中的列进行别名。
您可能想要:
select
studentid,
sum(score) Total,
avg(score > 85) Average,
max(score) Maximum,
min(score) Minimum
from results
group by studentid;
avg(score > 85)
为您提供得分高于85的比率,为0
和1
之间的十进制数。
另一方面,如果您希望平均分数高于85,则可以:
avg(case when score > 85 then score end) Average
答案 1 :(得分:2)
如果您希望分数比超过85,请使用case
表达式:
select studentid, sum(score) as Total,
avg(case when score > 85 then 1 else 0 end) as ratio_over_85,
max(score) as Maximum, min(score) as Minimum
from results
group by studentid;
或使用快捷方式:
avg( score > 85 ) as ratio_over_85,
此外,不要对列名使用单引号;仅将它们用于字符串和日期常量。