SQL-学生ID列表和小数点后2位的平均分数

SQL-学生ID列表和小数点后2位的平均分数,sql,average,Sql,Average,问题:如果学生的平均分数大于80,请编写一个查询,以显示学生ID和平均分数列表,小数点后两位。为average mark指定一个别名作为avg_mark。根据平均分数对结果进行排序 我编写了这个查询,但结果与预期的输出不匹配 select student_id, round(avg(value)) as avg_mark from mark where value>80 -------well this is wrong as I need to compare with an

问题:如果学生的平均分数大于80,请编写一个查询,以显示学生ID和平均分数列表,小数点后两位。为average mark指定一个别名作为avg_mark。根据平均分数对结果进行排序

我编写了这个查询,但结果与预期的输出不匹配

select student_id, round(avg(value)) as avg_mark 
from mark
where value>80    -------well this is wrong as I need to compare with an average of value
group by student_id
order by avg_mark
运行此查询会给出错误的输出[链接如下]


谢谢你

您希望
具有
而不是
其中

select student_id, round(avg(value)) as avg_mark 
from mark
group by student_id
having avg(value) > 80 
order by avg_mark

请改用此函数

round(avg(value), 2)

这将有助于

下面的代码应该可以正常工作

select student_id, cast(avg(value) as decimal(10,2)) as avg_mark from mark
group by student_id
having avg(value)>80
order by avg_mark;

根据studid从学生订单中选择studid、FirstName、trunc(介于(sysdate,dob)/12之间的月数)作为年龄

试试这个:

select student_id, round(avg(value)) as avg_mark 
from mark
group by student_id
having avg(value) > 80
group by student_id 
order by avg_mark

请仅使用您实际使用的数据库进行标记。虽然此代码块可能会回答此问题,但最好能提供一点解释,说明为什么会这样做。Hello@User157958。欢迎来到SO。请考虑看一下,以便有可能提高你的答案。一个简单的改进是将答案中的代码格式化,将其放入代码块中。